gpt4 book ai didi

c++ - C++ 中的 const 对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:21 27 4
gpt4 key购买 nike

我有一个关于常量对象的问题。在以下程序中:

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 函数中声明局部变量并修改它们是完全没问题的; const仅适用于对象的字段。

尝试写作

a = 19;

相反,会看到错误出现。

关于c++ - C++ 中的 const 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572586/

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