【问题标题】:C++ ,Single Inheritance, Garbage ValueC++,单继承,垃圾值
【发布时间】:2016-11-16 08:28:25
【问题描述】:
#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++ 新手。请帮忙。谢谢。

【问题讨论】:

  • 什么是disp?我在您的代码中没有看到它。
  • 你的命名也有点奇怪。您有名为 get 的函数实际上并没有“获取”任何东西,而是 set 值。
  • 对不起,disp 实际上是一个用于打印变量 c 值的函数。因为我正在编辑代码,所以忘记添加它。但是,如果我已经初始化了变量 a,为什么会显示垃圾值。再次感谢。

标签: c++ inheritance garbage


【解决方案1】:

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

解决您的问题的方法是使用 one 对象:

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

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 2020-09-18
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多