谁能告诉我为什么下面的代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
给出编译错误
“错误:将‘const Test’作为‘this’参数传递会丢弃限定符”
?
我的print()方法是const,这是我所理解的必要方法。对我来说,(注释掉的)sum()方法f()应该给出错误,但不是print()方法。如果有人能向我指出我的误解所在,那就太好了。
print()您正在对 const 对象调用非常量方法。方法const不能修改它所调用的对象,这是唯一允许您在const对象上调用的成员方法(以保留常量性)。const 方法在方法参数列表const 后面用 表示:
void Test::print() const {
cout << a << b << c;
}
Run Code Online (Sandbox Code Playgroud)
是的,const void充其量是没用的,只是void都是一样的。
const void print()
Run Code Online (Sandbox Code Playgroud)
这没有任何意义,你的意思是:
void print() const
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5466 次 |
| 最近记录: |