gpt4 book ai didi

c++ - 类构造函数和类成员变量的意外输出值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:42 25 4
gpt4 key购买 nike

我需要理解为什么 x(x + 1) 仅在我退出构造函数后才发生。

class A
{
protected:
int x;

public:
A(int x = 5) : x(x + 1)
{
cout << "In A::A x=" << x << endl;
}

operator int() const { return x; }
};

void main()
{
A a1(10);
cout << a1 << endl ;
}

我想我会得到:

In A:: An x=11
11

但不知何故我得到了:

In A:: An x=10
11

最佳答案

您有两个名为 x 的变量。

在构造函数的主体中,参数变量将隐藏 成员变量。每当您在构造函数体内使用 x 时,它将是参数,而不是成员。

要使用成员变量,您需要从对象中显式获取它,例如 this->x

一般提示:不要对嵌套范围内的符号使用相同的名称。除了解决这个问题,它还会使代码更易于阅读和理解。

关于c++ - 类构造函数和类成员变量的意外输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54290430/

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