![](/img/trans.png)
[英]C++ Difference Between Const Reference to Non Const Object and Non Const Reference to Non Const Object
[英]const object in c++
我对常数对象有疑问。 在以下程序中:
class const_check{
int a;
public:
const_check(int i);
void print() const;
void print2();
};
const_check::const_check(int i):a(i) {}
void const_check::print() const {
int a=19;
cout<<"The value in a is:"<<a;
}
void const_check::print2() {
int a=10;
cout<<"The value in a is:"<<a;
}
int main(){
const_check b(5);
const const_check c(6);
b.print2();
c.print();
}
void print()
是类const_check
的常量成员函数,因此根据常量的定义,任何更改int a
尝试都会导致错误,但程序对我来说运行正常。 我想我在这里有些困惑,任何人都可以告诉我为什么编译器没有将其标记为错误?
通过写作
int a = 19;
在print()
,你声明一个新的局部变量a
。 这与您在类const_check
声明的int a
const_check
。 成员变量被称为由局部变量遮蔽 。 在const
函数中声明局部变量并修改它们是完全可以的。 const
仅适用于对象的字段。
试着写
a = 19;
相反,看到出现错误。
你是不是改变实例变量a
你正在创建一个局部变量a
中的每个方法。
您没有在print()或print2()中更改成员变量a。 您正在声明一个新的局部变量a,它隐藏了成员变量a。
另外,除非我弄错了,否则你忘了实际声明成员变量const开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.