gpt4 book ai didi

c++ - 错误 : passing 'xxx' as 'this' argument discards qualifiers

转载 作者:行者123 更新时间:2023-11-30 00:46:03 25 4
gpt4 key购买 nike

谁能告诉我为什么会出现下面的代码:

#include <iostream>
using namespace std;

class Test {
int a, b, c;
public:
Test() : a(1), b(2), c(3) {}
const void print() {cout << a << b << c;}
int sum() {return (a+b+c);}
};

const Test& f(const Test& test) {
test.print();
// cout << test.sum();
return test;
}

main() {
Test x;
cout << "2: ";
y = f(x);
cout << endl;
}

给出编译错误

"error: passing 'const Test' as 'this' argument discards qualifiers"

?

我的 print() 方法是 const,这是我所理解的所有必需的。对我来说,f() 中的(注释掉的)sum() 方法应该给出错误,但 print() 方法不会。如果有人能指出我误解的地方 - 那就太好了。

最佳答案

您正在调用非常量方法 print()在一个常量对象上。 const方法不能修改调用它的对象,这是唯一允许调用的成员方法 const对象(以保持常量性)。const 方法由 const 表示方法参数列表之后:

void print() const {cout << a << b << c;}

是的,const void充其量是无用的,只是void都是一样的。

关于c++ - 错误 : passing 'xxx' as 'this' argument discards qualifiers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39918415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com