我可以毫无问题地运行以下代码。我注意到main中的a.bytes和byte都更改为“B”。
那么A的get()函数中的“const”是做什么的呢?如下更改从A获得的字节会不会有问题?
注意:我不在乎A的值是否会改变。我只是想知道我是否会遇到无法预料的问题,尤其是当我在解构函数中释放A时,无论我对main的字节采取何种疯狂操作。
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;
}
最佳答案
这仅表示成员函数将不会(也不能)修改对象内部的任何内部数据。
这还会使成员函数内的this
变量成为const
。
关于c++ - 将const放在函数的声明之后是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26380806/