我可以毫无问题地运行以下代码。我注意到main中的a.bytes和bytes都改为" B"。 那么" const"在A的get()函数中做什么?在我改变我从A得到的字节的用法中会出现问题吗?
注意:我不在乎A的价值是否会发生变化。我只是想知道我是否会遇到不可预测的问题,特别是当我在解构函数中释放A时,无论我采用主要字节中的任何疯狂操作。
class A{
public:
A(){
bytes = (char *)malloc(12);
bytes[0] = 'A';
bytes[1] = 0;
}
~A(){
free(bytes);
}
char * get() const{
return bytes;
}
char * bytes;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
char * bytes = a.get();
bytes[0] = 'B';
return 0;
}
答案 0 :(得分:4)
它只是意味着成员函数不会(并且不能)修改对象内的任何内部数据。
它还会使成员函数中的this
变量为const
。
答案 1 :(得分:3)
这意味着该函数不会修改类的成员(只能修改具有关键字mutable
的成员)。
这也意味着该函数不会调用该类的其他非const函数。
答案 2 :(得分:1)
要添加注释,当const放在成员函数之后,这意味着传递给成员函数的“this”指针将是const, 因此,仅允许可变和/或只读操作。
答案 3 :(得分:0)
这意味着您只能修改对象的mutable
成员变量。如果您有一个const
对象,但仍希望使用一些非变异成员函数,这将非常有用。