gpt4 book ai didi

c++ - 垃圾值 - C++ 中的继承

转载 作者:太空狗 更新时间:2023-10-29 23:53:06 24 4
gpt4 key购买 nike

我有一个类如下:

class base
{
protected:
int x;
int y;
int z;
public:
base(int x, int y, int z)
{
x = x;
y = y;
z = z;
}
virtual void show();
};

我从上面派生了一个类:

class derived : protected base
{
public:
int a;
int b;
int c;
derived(int a, int b, int x, int y, int z) : base(x, y, z) //initialising the base class members as well
{
cout<<a<<b<<x<<y<<z; //works fine
a = a;
b = b;
}
void show()
{
cout<<a<<b<<x<<y<<z; //show junk values
}
//some data members and member functions
};

在 main() 中,我使用:

    derived d(1, 2, 3, 4, 5);

d.show();

数据成员似乎在构造函数中具有合法值。但是,当我使用类似的功能时,即具有相同的可见性模式时,似乎会出现垃圾值。

最佳答案

a = a;
b = b;

应该是

this->a = a;
this->b = b;

或者,更好的是,使用初始化列表:

derived(int a, int b, int x, int y, int z) : a(a), b(b),  base(x,y,z) 
{
cout<<a<<b<<x<<y<<z; //works fine
}

您正在做的是 self 分配参数,因此不会设置成员。

关于c++ - 垃圾值 - C++ 中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552229/

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