반응형
이 전 포스팅에서 구조체에 대해서 이야기했다.
클래스와 구조체는 매우 유사한 생김새를 가지고 있다.
이 둘의 차이점은 선언 방식이다.
Class
class Vehicle {
char key_ID[20];
int fuelGuage;
int curSpeed;
void Accel() {
fuelGuage--;
curSpeed++;
}
};
struct
struct Car {
char key_ID[20];
int fuelGuage;
int curSpeed;
void Accel() {
fuelGuage--;
curSpeed++;
}
};
struct에서 class로 바뀌었다는 것이 유일한 차이이다.
하지만 구조체에서 클래스로 변경이 되면서 다음이 불가하다
int main()
{
Car mycar = { "My car",100,30 }; ( O )
Vehicle myVehicle = { "My Vehicle" , 100, 30}; ( X )
}
클래스 변수 선언 방법은 다음과 같다.
Vehicle myVehicle;
그리고 클래스 선언 시 클래스 내부에 만들었던 함수와 변수에 접근을 다음과 같이 하면 오류가 난다.
여기서 구조체와 차이점을 확인할 수 있다.
클래스에서 변수나 함수를 정의할 때 접근제한 지시자를 명시해 줘야 한다.
하지만 위에 Vehicle 클래스를 확인해 보면 접근제한 지시자가 없다.
만약, 접근제한 지시자가 명시되지 않았다면 자동적으로 private로 지정이 된다.
- public - 어디서든 접근허용
- protected - 상속과 녜에 놓여있을 때, 유도 클래스에서의 접근허용
- private - 클래스 내에서만 접근 허용
Vehicle에 Aceel() 접근 제한자를 public으로 바꾸면 main()에서도 접근이 가능하다.
class Vehicle {
char key_ID[20];
int fuelGuage;
int curSpeed;
public:
void Accel() {
fuelGuage--;
curSpeed++;
}
};
int main()
{
Vehicle myVehicle;
myVehicle.Accel();
}
반응형
'c++ > 클래스의 기본' 카테고리의 다른 글
[C++] 용어정리: 객체, 멤버변수, 멤버함수 (0) | 2022.12.30 |
---|---|
[C++] 구조체 사용 (0) | 2022.12.30 |