저번시간에는 클래스와 객체에 대하여 학습했다면, 이번 시간에는 속성 즉 전용(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학기)한성현교수 강의 내용 변형 및 요약