본문 바로가기

Programming/C++

클래스와 객체

C++의 클래스는 C에서의 구조체와 매우 닮았습니다.

물론 C++에서도 구조체를 사용할 수 있구요.







클래스는 구조체와 똑같이 선언합니다. 단지 이름이 class 이죠.




클래스는 구조체와 다르게 변수를 선언하지 못합니다.




구조체와 클래스의 차이를 아시겠나요? 구조체의 변수에는 접근이 가능하지만 클래스의 변수에는 접근이 불가능 합니다.




그래서 클래스에서 사용하는 것이 있습니다. 바로 "접근제어 지시자" 입니다.


접근제어 지시자에는 public, private, protected가 존재합니다.


public은 어디에서나 접근이 가능하고, private는 클내스 내부에서만 접근가능하며, protected는 상속관계에서 사용됩니다.




이렇게 public:을 써주게되면 speed에 접근이 가능하게 됩니다.


그러면 아무것도 안쓴상태는 어떤 상태일까요?  바로 private 상태입니다. 그래서 접근이 불가능하죠.


그런데 구조체에서도 private와 public이 존재합니다. 구조체는 안쓰면 public이기 때문에 접근이 가능했었던 겁니다. 신기하죠?






먼저 main함수부터 살펴보도록 하겠습니다.


main 함수에서 Car이라는 클래스를 만들었고 run 이라는 객체를 생성했습니다. 

쉽게 말하면, run이라는 이름으로 Car이라는 클래스를 사용하겠다는 거죠.





run에는 speed라는 변수와 SpeedUp함수, ShowSpeed함수가 있습니다. 

클래스 내부에 있는 변수를 멤버변수, 함수를 멤버함수라고 부릅니다.




각각 변수와 함수에 접근할 때에는 run.SpeedUp();과 같이 .을 이용해서 접근을 합니다.


하지만 위의 예제에서 private으로 선언된 speed라는 변수는 접근을 할 수 없습니다. 그래서 클래스 내부에 공개된 함수를 통해서 speed에 접근을 해야 합니다.








여기서 중요한점은 클래스 내부에서는 private에도 접근이 가능하다는 겁니다. 클래스 외부에서는 절대 접근 불가합니다.





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

파일분할  (0) 2015.06.01
new & delete  (0) 2015.06.01
참조자와 함수  (0) 2015.04.06
참조자 Reference  (0) 2015.03.20
자료형 bool  (0) 2015.03.19