CPP 15

캡슐화와 const 함수

정보 은닉 멤버변수를 private으로 선언하고 해당 변수에 접근하는 함수를 별도로 정의하여 안전한 형태로 멤버변수의 접근을 유도하는 것이다. 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수들을 엑세스 함수(access function)라 한다. 제한된 방법으로의 접근만 허용을 해서 잘못된 값이 저장되지 않도록 도와야 하고 실수를 했을 때 발견되도록 한다. class Point { private: int xpos; int ypos; public: // 엑세스 함수 int GetXpos() const { return xpos; } void SetXpos(int x) { xpos=x; } int GetYpos() const { return ypos; } void SetYpos(int y) { ypo..

C언어 기반의 C++ 2

const와 포인터 const의 의미 // int형 변수 num을 상수화 const int num = 10; // 상수만을 가리키는 포인터. 포인터 ptr1을 이용해서 val1의 값을 변경할 수 없다. // 가리키는 대상은 변경이 가능하지만(ptr1=&val2;), 가리키는 값은 변경할 수 없다. const int * ptr1 = &val; // 포인터 ptr2가 상수화 된다. 정수형 변수를 가리키는 상수형 포인터. // 포인터가 가리키는 대상은 변경할 수 없고, 가리키는 값은 변경이 가능하다(*ptr2=100;) int * const ptr2 = &val; // 가리키는 대상 및 값의 변경이 불가능하다. // 포인터 ptr3가 상수화 되었으며, ptr3를 이용해서 val3의 값을 변경할 수 없다. co..

템플릿 형식 연역 규칙

템플릿 형식 연역 template void f(ParamType param); f(expr); 컴파일러는 expr을 이용해서 두 가지 형식을 연역한다. T ParamType 두 형식이 다른 경우가 많다. template void f(const T& param); int x = 0; f(x); T는 int로 연역되나 ParamType은 const int&로 연역된다. T에 대해 연역된 형식이 함수에 전달된 인수의 형식과 항상 같지는 않다. T에 대해 연역된 형식은 expr의 형식, ParamType의 형태에 의존한다. 형태에 따라 세가지 경우로 나뉜다. 경우 1: ParamType이 포인터 또는 참조 형식이지만 보편 참조는 아닐 경우 형식 연역 과정 expr이 참조 형식이면 참조 부분을 무시한다. expr..