반응형

오늘 수업 들은것.... 근데 뭔가 글쓰기는 귀찮아서 주석으로 대체한다. (주석적다가 일부분 수업 놓침 망함티비)

#include <iostream>

class ConstTest
{
public:

	const int a = 0;
	int b = 0;

	ConstTest() {}
	~ConstTest() {}
	void Addnum()
	{
		b++;
	}
	int GetNum() const
	{
		return b;
	}
	void Show() const
	{
		std::cout << a << " " << b << '\n';
	}
};

int main()
{
	const ConstTest* a = new ConstTest(); // const객체 선언. 객체의 멤버를 바꾸지 않겠다!
	ConstTest* const b = new ConstTest(); // non-const객체 선언. 객체의 멤버를 바꿀 수 있다. but b포인터의 주소는 바꿀 수 없다.

	a->b += 1; // 에러. const객체는 멤버를 변경할 수 없다.
	b->b += 1; // 가능.

	a->Addnum(); // 에러. const객체는 const함수만 호출 가능.
	b->Addnum(); // 가능.

	a->GetNum() = 1; // const함수기 때문에 반환 값을 바꿀 수 없다.
	b->GetNum() = 1; // 위와 동일

	a->Show(); // 가능. const객체는 const함수는 호출할 수 있기 때문.
	b->Show(); // 가능.

	a = b; // 가능. 주소는 바꿀 수 있다. 멤버만 못바꿈.
	b = a; // 불가능. 포인터를 const화 시켰기 때문에 주소를 바꿀 수 없다.

	delete a;
	delete b;

	a = new ConstTest(); // 가능
	b = new ConstTest(); // 에러. const변수는 선언과 동시에 초기화 되어야 하기 때문

}

 

알아서들 이해하셨길....

반응형

+ Recent posts