본문 바로가기

카테고리 없음

[C++] Private와 Public (보통멤버 변수/ 보통멤버 함수)

저번시간에는 클래스와 객체에 대하여 학습했다면, 이번 시간에는 속성 즉 전용(private), 범용(public), 보호(protected)에 대하여 학습했다.

 

 

전용 (Private)은 해당 클래스 내부에서만 접근 할 수 있으며, 디폴트 속성은 생략 가능하다.

범용 (Public)은 어디에서나 접근 가능하고 보호(Protected)는 Private이지만 자식에게는 접근 할 수 있도록 하는 것이다.

 

 

 

전용(Private)과 보호(Protected)는 멤버 변수, Public은 보통 멤버 함수로 분류할 수 있다.

 이 둘의 차이점은 외부에서 접근이 가능한가, 불가능한가 이다.

그러므로 보통멤버변수는 Private멤버를 접근하는 통로로 이용한다.

 

 

보통멤버 변수 보통멤버 함수
- 외부에서 접근 불가 - 외부에서 접근 가능
- Private, Protected - Public

 

class Cat

{

 private :  //속성

 string name;   //멤버 변수

public :

 string getName(); //멤버 함수

};

Cat nabe; //객체

 

 

 

private : 멤버 변수는 주로 Private를 선언하며 생략이 가능하다. (멤버의 액세스 권한이 없으면 Private)

            해당 클래스의 멤버함수만이 접근 가능하다. 해당 클래스의 멤버함수 [ex. getName()]에 의해서만 접근이 가능              하다.

 

 

public : 멤버 함수는 주로 Public로 선언한다. public의 멤버 함수는 private멤버 변수를 접근하는데 많이 사용된다.

           [ex. name의 값에 접근하려고 하면 getName()라는 함수를 통해야 한다.

 

 

 

멤버함수를 정의하는 방법에는 두 가지가 있는데 

클래스 안에서 정의 하는 법과,  클래스 밖에서 정의하는 법이 있다.

*클래스 안에서 정의하는 경우에는 클래스의 몸체가 비대해질 수 있어 잘 사용하지 않는다.

 

 

(클래스 안에서 정의)

 

 

 (클래스 밖에서 정의)

 

여기서 재미 있는점은, 멤버함수가 클래스 안에서 정의 되면, 자동적으로 inline함수가 된다.

 

 

inline 함수란 ? :  C언어에서는 #define문에 의한 매크로 함수와 유사하다. C++에서는 함수 선언이나 정의 앞에

            inline이라는 키워드를 사용하면 매크로 함수의 부작용을 없애며 같은 기능을 수행한다.

                                     이 함수는 컴파일러에 의하여 처리된 텍스트가 아닌, 함수 코드 블록의 복사본인 기계어 코드가 직접 삽입

                                       된다는 특징을 갖고 있다. 단, 이 함수를 사용하면 프로그램  전반적인 실행 속도가 빨라지지만 코드가 작은함수일 때나 호출 빈도가 낮을 때 사용하는 것이 좋다.

 

 

 

C++프로그래밍(21-2학기)한성현교수 강의 내용 변형 및 요약