C ++ const成员函数

时间:2011-10-28 17:42:42

标签: c++

我有一个令人费解的语法错误

上一个代码:

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(在这种情况下)意味着成员变量不会改变?

对此的想法?

3 个答案:

答案 0 :(得分:2)

在方法声明的末尾添加const不会改变str参数的语义。发生了其他事情,或者编译器有错误。

答案 1 :(得分:0)

它应该工作得很好。因此,您还进行了一些影响结果的其他修改。

答案 2 :(得分:0)

向成员函数添加const限定符意味着调用函数的对象可以是const:

const A a;
a.process("abcd");

它与你的const chars数组没有任何关系。