cosnt 멤버 함수
const 멤버 함수는 2가지의 특별한 특징을 갖는다.
1.멤버 변수의 값 변경을 허용하지 않는다.
2.멤버 변수 값의 변경에 대한 기회제공도 불가능 하다.
아래 구문은 에러를 이르키는 구문이며 에러 부분에 주석처리된 코드를 넣으면 해결이 가능하다.
class Count
{
Count() : cnt{0}//간접적으로 멤버변수를 조작할수 있는 동기를 부여하기 때문에 에러가 난다.
int* GetPtr() const//const int* Getptr() const //const를 맨 압에 붙이게 되면 포인터가 가리키는 대상가지 상수화 시켜버린다. 접근은 가능하지만 변경은 불가능하다.
{
return &nct;//compile Error
}
void increment()
{
cnt++;
}
void ShowData() const
{
ShowIntro(); //Compile Error
}
void Showintro()//void Showintro() const //서로간의 상수화가 되면 에러를 발생시키지 않는다.
{
cout<<"현재 count의 값 : "<<endl;
}
};
int main()
{
Count count;
count.increment();
count.ShowData();
}
값이 변경 되는가, 얼마로 변경 되는가 에 대한 판단은 compile time 이 아닌 run time 에서 일어 나며, complie이 run tiem 보다 먼저
일어나기 때문에 에러가 발생하는 것이다. 즉 compile time 에는 상수가 됐는지 않됐는지만 판단한다.
덧붙여 말하자면 함수 오버로딩을 할때 요구조건으로 const를 사용할수 있다.
const 멤버 함수는 2가지의 특별한 특징을 갖는다.
1.멤버 변수의 값 변경을 허용하지 않는다.
2.멤버 변수 값의 변경에 대한 기회제공도 불가능 하다.
아래 구문은 에러를 이르키는 구문이며 에러 부분에 주석처리된 코드를 넣으면 해결이 가능하다.
class Count
{
Count() : cnt{0}//간접적으로 멤버변수를 조작할수 있는 동기를 부여하기 때문에 에러가 난다.
int* GetPtr() const//const int* Getptr() const //const를 맨 압에 붙이게 되면 포인터가 가리키는 대상가지 상수화 시켜버린다. 접근은 가능하지만 변경은 불가능하다.
{
return &nct;//compile Error
}
void increment()
{
cnt++;
}
void ShowData() const
{
ShowIntro(); //Compile Error
}
void Showintro()//void Showintro() const //서로간의 상수화가 되면 에러를 발생시키지 않는다.
{
cout<<"현재 count의 값 : "<<endl;
}
};
int main()
{
Count count;
count.increment();
count.ShowData();
}
값이 변경 되는가, 얼마로 변경 되는가 에 대한 판단은 compile time 이 아닌 run time 에서 일어 나며, complie이 run tiem 보다 먼저
일어나기 때문에 에러가 발생하는 것이다. 즉 compile time 에는 상수가 됐는지 않됐는지만 판단한다.
덧붙여 말하자면 함수 오버로딩을 할때 요구조건으로 const를 사용할수 있다.