const 3

const, friend, static, mutable, explicit

const const는 값을 상수로 선언할 수 있도록 도와주는 키워드다. const를 앞에 붙이면 값은 변경할 수 없게 된다. const의 선언 유무도 함수 오버로딩 조건에 해당이 된다. class Test { public: void Func() { } void Func() const { } }; 객체도 상수화 할 수 있다. 이 객체를 대상으로는 const 멤버 함수의 호출만 허용한다. class SoSimple { private: int num; public; SoSimple(int n) : num(n){ } // 생성자 SoSimple& NotConstFunc(int n) { num+=n; } void ConstFunc() const // const 함수 { cout

캡슐화와 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..