C++
상수 클래스 멤버 함수
수색…
비고
클래스의 'const 멤버 함수'는 실제로 무엇을 의미합니다. 간단한 정의는 const 멤버 함수가 객체를 변경할 수 없다는 것입니다. 그러나 '변할 수 없다'는 것은 실제로 여기서 의미합니다. 이는 단순히 클래스 데이터 멤버에 대한 할당을 수행 할 수 없다는 것을 의미합니다.
그러나 예제에 표시된대로 항목을 맵에 삽입하는 등의 기타 간접 연산을 수행 할 수 있습니다. 이것을 허용하는 것은 const 함수가 객체를 수정하는 것처럼 보일 수 있습니다 (예, 어떤 의미에서 그렇습니다).하지만 허용됩니다.
따라서 진정한 의미는 const 멤버 함수가 클래스 데이터 변수에 대한 할당을 수행 할 수 없다는 것입니다. 그러나 예제에서 설명한 것과 같은 다른 것들을 할 수 있습니다.
상수 멤버 함수
#include <iostream>
#include <map>
#include <string>
using namespace std;
class A {
public:
map<string, string> * mapOfStrings;
public:
A() {
mapOfStrings = new map<string, string>();
}
void insertEntry(string const & key, string const & value) const {
(*mapOfStrings)[key] = value; // This works? Yes it does.
delete mapOfStrings; // This also works
mapOfStrings = new map<string, string>(); // This * does * not work
}
void refresh() {
delete mapOfStrings;
mapOfStrings = new map<string, string>(); // Works as refresh is non const function
}
void getEntry(string const & key) const {
cout << mapOfStrings->at(key);
}
};
int main(int argc, char* argv[]) {
A var;
var.insertEntry("abc", "abcValue");
var.getEntry("abc");
getchar();
return 0;
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow