我有一个令人费解的语法错误
上一个代码:
class A {
public:
void process(const string& str) {};
};
我有
A a;
a.process("abcd");
一切都很好
现在我将进程成员函数更改为const
void process(const string& str) const {};
现在
a.process("abcd");
得到关于str是const char [5]的编译错误......
const添加如何影响语法错误。我认为const(在这种情况下)意味着成员变量不会改变?
对此的想法?
答案 0 :(得分:2)
在方法声明的末尾添加const
不会改变str
参数的语义。发生了其他事情,或者编译器有错误。
答案 1 :(得分:0)
它应该工作得很好。因此,您还进行了一些影响结果的其他修改。
答案 2 :(得分:0)
向成员函数添加const限定符意味着调用函数的对象可以是const:
const A a;
a.process("abcd");
它与你的const chars数组没有任何关系。