c++/클래스의 기본

[C++] 클래스(Class)

TIM_0529 2022. 12. 30. 04:25
반응형

이 전 포스팅에서 구조체에 대해서 이야기했다.

 

클래스와 구조체는 매우 유사한 생김새를 가지고 있다.

 

이 둘의 차이점은 선언 방식이다.

 

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