Programming/C++ STL2014.02.28 10:35
const 멤버변수는 초기화가 불가능 하지만 클래스에서 값을 준채로 초기화 할 수 없기에
 constructor(variables ...) : const variable(parameter) 

생성자에서 : 키워드를 이용하여 초기화 한다.(상속이 아니다!!!)
class class_name
{
    const int key; // const member variable

    class_name(int _key) : key(_key)
    {
    }
};  

아무튼.. const 멤버 변수가 하나라도 있으면 모든 생성자에 영향을 주는 듯
class student
{
	const int id;
	int age;
	char name[20];
	char subject[30];

public:
	student()
	{
	}

	student(int _id) : id(_id)
	{

	}

	student(int _id, int _age, char *_name, char *_subject) : id(_id)
	{
		age = _age;
//		id = _id;
		strcpy(name, _name);
		strcpy(subject, _subject);
	}

1>d:\cpp\ch12\ch12\ch12.cpp(13): error C2758: 'student::id' : 생성자 기본/멤버 이니셜라이저 목록에 초기화해야 합니다.
1>          d:\cpp\ch12\ch12\ch12.cpp(7) : 'student::id' 선언을 참조하십시오.
1>d:\cpp\ch12\ch12\ch12.cpp(44): error C2582: 'operator =' 함수는 'student'에서 사용할 수 없습니다. 


+
const 멤버 함수
 ret_type function(parameter ...) const

const 함수 내에서는
값을 조작할 수 없으며(포인터 값 return도 불가)
const 함수만 호출이 가능하다.
 

'Programming > C++ STL' 카테고리의 다른 글

연산자 오버로딩  (0) 2014.03.04
c++ explicit  (0) 2014.02.28
c++ class / const member variable & function  (0) 2014.02.28
deep copy / shallow copy < object copy  (0) 2014.02.27
crt0.o / crtexe.obj  (0) 2014.02.27
c++ constructor  (0) 2014.02.26
Posted by 구차니

댓글을 달아 주세요