サーチ…
備考
クラスの '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