const int NUM = 1;
const 상수선언은 위와 같다 . 그 의미는 NUM변수의 값을 변경할 수 없고 1로 고정이다.
const Person* man = new Person();
위와 같이 class형식의 변수를 const선언한다면 man이 지정하는 객체의 멤버변수의 변경을 제한한다는 의미이다.
따라서 멤버변수를 변경할 가능성이 있는 멤버함수의 호출도 할 수 없다.
const 객체의 경우
- 비 const 함수의 호출 불가
- public인 const 함수만 호출 가능
객체를 참조하는 const 참조자의 경우
- 비 const 함수의 호출 불가
- public인 const 함수만 호출 가능
똑같다.
c++에서 함수를 탐색할 때 총 3가지를 본다
- 함수의 이름
- 매개변수의 수, 자료형
- const 선언 유무
따라서 const의 유무로 오버로딩이 가능하다.
void SimpleMethod();
void SimpleMethod() const;
다른 함수 취급이므로 동시에 선언가능
friend 선언한 class에서는 private 멤버에 자유롭게 접근 가능하다.
class A
{
private:
int num1;
friend class B;
public:
//friend clas B;
//private public 어느 영역에 선언하든 차이가 없다.
}
class B
{
private:
int num1;
public:
Print(A &ref)
{
cout << ref.num1; // private 멤버인 num1에 접근할 수 있다.
}
}
- A에서 friend 선언을 통해 B를 friend class로 만듬
- B의 멤버함수가 A객체를 매개변수로 받음
- 복사한 A객체의 private맴버에 접근가능
friend 선언은 class 뿐만 아니라 멤버함수, 전역함수도 가능하다.
멤버함수 :
friend void Person::ShowInfo(const &A);
전역함수 :friend void ShowInfo(const &A);