Coding/C++

(New) C++언어 공부 0005

  • -
728x90
반응형

1. 클래스

    • 기본 자료형으로 인식해 주지 않는 C언어의 구조체에 대한 불만으로 등장

        • 구조체 변수를 선언할 때 struct Car a; 와 같이 사용

    • 클래스 = 구조체 + 함수

    • 추상화된 데이터로 사용자 정의 자료형을 정의하는 것

    

 

1-1. 생성자

    • 객체가 생성될 때, 초기값을 제공하고 필요한 초기화 절차를 실행하는 클래스와 이름이 동일한 return값이 없는 멤버 함수

    • 함수이므로 중복 정의가 가능하고, 매개변수를 가질 수 있으며, 생성자에서 다른 생성자 호출하는 것 또한 가능

    • 반드시 public한 접근이 가능해야 함

    • 사용자가 정의하지 않으면, 컴파일러가 내용이 없는 디폴트 생성자를 자동으로 추가

 

1-2. 소멸자

    • 객체가 사라질 때, 메모리 할당 해제 및 마무리 절차를 실행하는 클래스 이름 앞에 ~가 붙은 return값이 없는 멤버 함수

    • 함수이지만 중복 정의가 불가능하고, 매개변수를 가질 수 없음

    • 반드시 public한 접근이 가능해야 함

    • 사용자가 정의하지 않으면, 컴파일러가 내용이 없는 디폴트 소멸자를 자동으로 추가

 

1-3. 선언과 구현의 분리

    • 클래스의 선언과 구현을 분리하는 것이 일반적

    

    

 

1-4. 클래스 문법 요약

// Car.h (헤더파일, 클래스 선언)
class Car {
        protected:
                int speed;
                char name[40];
        public:
                int gear;
                Car(){ }
                ~Car(){ }
                Car(int s, char* n, int g) // 매개변수가 있는 생성자
                void changeGear(int g);
                void speedUp();
                void display();
                void whereAmI();
};
// Car.cpp (클래스 정의)
#include "Car.h”
Car::Car(int s, char* n, int g) { // 매개변수가 있는 생성자
        speed = s, gear = g; // 멤버변수 초기화
        strcpy(name, n); // 멤버변수 초기화
}
void Car::changeGear(int g) {
        gear = g;
}
void Car::speedUp() {
        speed += 5;
}
void Car::display() {
        printf("[%s] : 기어=%d단 속도=%dkmph\n", name, gear, speed);
}
void Car::whereAmI() {
        printf("객체 주소 = %x\n", this);
}



728x90
반응형

'Coding > C++' 카테고리의 다른 글

(New) C++언어 공부 0007  (2) 2024.08.29
(New) C++언어 공부 0006  (0) 2024.08.29
(New) C++언어 공부 0004  (0) 2024.08.29
(New) C++언어 공부 0003  (1) 2024.08.29
(New) C++언어 공부 0002  (0) 2024.08.29
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.