[C++]const객체의 특성

dd_ddong·2022년 7월 23일
0

c++

목록 보기
22/38

const 객체

const int NUM = 1;
const 상수선언은 위와 같다 . 그 의미는 NUM변수의 값을 변경할 수 없고 1로 고정이다.

const Person* man = new Person();
위와 같이 class형식의 변수를 const선언한다면 man이 지정하는 객체의 멤버변수의 변경을 제한한다는 의미이다.

따라서 멤버변수를 변경할 가능성이 있는 멤버함수의 호출도 할 수 없다.

const 객체의 경우

  1. 비 const 함수의 호출 불가
  2. public인 const 함수만 호출 가능

객체를 참조하는 const 참조자의 경우

  1. 비 const 함수의 호출 불가
  2. public인 const 함수만 호출 가능

똑같다.

const로 오버로딩

c++에서 함수를 탐색할 때 총 3가지를 본다

  1. 함수의 이름
  2. 매개변수의 수, 자료형
  3. const 선언 유무

따라서 const의 유무로 오버로딩이 가능하다.
void SimpleMethod();
void SimpleMethod() const;

다른 함수 취급이므로 동시에 선언가능

friend 선언

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에 접근할 수 있다.
    }
}
  1. A에서 friend 선언을 통해 B를 friend class로 만듬
  2. B의 멤버함수가 A객체를 매개변수로 받음
  3. 복사한 A객체의 private맴버에 접근가능

friend 선언은 class 뿐만 아니라 멤버함수, 전역함수도 가능하다.

멤버함수 : friend void Person::ShowInfo(const &A);
전역함수 : friend void ShowInfo(const &A);

0개의 댓글