c++,单继承,垃圾值

C++ ,Single Inheritance, Garbage Value

本文关键字:单继承 c++ 继承      更新时间:2023-10-16
#include<iostream>
using namespace std;
class Alpha
{
    int a;
public:
    void get_a(int x)
    {
        a = x;
    }
    int hello()
    {
        return a;
    }
};
class Beta : public Alpha
{
    int b, c;
public:
    void get_b(int y)
    {
        b = y;
    }
    void add()
    {
        c = hello() + b;
        cout << c << endl; // displays garbage value
    }
};
int main()
{
    Alpha v1;
    Beta v2;
    v1.get_a(4);
    v2.get_b(3);
    v2.add();
    v2.disp();
    return 0;
}

v2.disp()的输出显示垃圾值,但当我将"a"初始化为v2时。Get_a而不是v1。Get_a,它显示正确答案。c++新手。请帮助。谢谢。

问题是您有两个彼此不相关的不同对象。物体v1与物体v2是不相关的,它们是独立的、不同的物体。你用v1.get_a(4)初始化Alpha::a,这不会初始化Beta::a

解决这个问题的方法是使用一个对象:

Beta v;
v.get_a(4);
v.get_b(3);
v.add();
v.disp();