【发布时间】:2018-01-20 22:13:51
【问题描述】:
我在一个类中有一个 fstream & 成员,我在该类的 const 函数中调用 seekg 函数,但代码可以编译。我查了一下,seekg 没有声明为const(也不应该是),这是怎么回事?
这是我的代码:
class Test {
fstream &f;
public:
Test(fstream &f_): f(f_) {}
int fid() const {
f.seekg(5);
return 0;
}
};
【问题讨论】:
-
您能否详细说明为什么您希望它无法编译?
-
无法更改引用以引用不同的对象。引用的对象不是
const。 -
@Peter 所以你是说因为引用本质上是一个常量,所以它在这里引用的对象不需要是(类似于如果它是一个指针)?顺便说一句,从语义上讲,我们现在看到一个类的成员
f正在被const函数更改,这有什么意义? -
const适用于Test的实例,而不适用于它们引用的其他对象。 -
const被添加到顶层,你不能有const引用。所以T& const -> T&.