偶然发现了以下代码:
class Person
{
private:
char name[10];
public:
// this won't compile:
char* getName_1() const {
return name;
}
// this will:
const char* getName_2() const {
return name;
}
};
我想知道编译器究竟如何判断 getName_1()
不是 const 函数。因为函数体内并没有真正修改成员变量的代码。
最佳答案
由于 getName_1
被标记为 const
,因此该类的所有字段都被视为 const。
所以getName_1
中name
的类型是const char[10]
。
这不能隐式转换为char *
(返回类型),因此编译器报错。
关于c++ - C++ 编译器如何检测非常量函数体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149038/