메소드 정의 맨 뒤에 붙는 const는 왜 쓰나요?
조회수 9621회
1 답변
-
method 뒤에 const키워드를 붙이면
1. 이 메소드 안에서는 어떤 변수도 바꿀 수 없음(mutable은 예외)
class MyClass { private: int counter; public: void Foo(){ counter=0; std::cout << "Foo" << std::endl; } void Foo() const{ //counter = 1; //const함수에서는 값을 변경할 수 없으므로 error std::cout << "Foo const" << std::endl; } }; int main() { MyClass cc; const MyClass& ccc = cc; cc.Foo(); ccc.Foo(); }
결과는
Foo Foo const
2. const 메소드 안에서는 const가 아닌 메소드는 부를 수 없음
class MyClass { public: void Foo(){ std::cout << "Foo" << std::endl; callByFoo(); } void Foo() const{ std::cout << "Foo const" << std::endl; callByFoo(); //const함수에서는 const가 아닌 메소드는 부를 수 없음. error } void callByFoo(){ std::cout << "callByFoo" << std::endl; } void callByFoo() const { std::cout << "callByFoo const" << std::endl; } }; int main() { MyClass cc; const MyClass& ccc = cc; cc.Foo(); ccc.Foo(); }
결과는
Foo callByFoo Foo const callByFoo const
댓글 입력