繁体   English   中英

c ++中的const对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM