2016-11-16 98 views
2
#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的输出()表示垃圾值,但是当我initalise“a”作为v2.get_a代替v1.get_a,它示出了正确的答案。新的C++ btw。请帮忙。谢谢。C++,单继承,垃圾值

+1

什么是'disp'?我没有在你的代码中看到它。 –

+1

你的命名也有点怪异。你有名为'get'的函数,它实际上并没有“获取”任何东西,而是设置*值。 –

+0

对不起,disp实际上是一个打印变量c的值的函数。自从编辑代码后忘了添加它。但是,如果我已经初始化变量a,为什么会显示垃圾值。再次感谢。 – user7166135

回答

2

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

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

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

好吧,太棒了!非常感谢兄弟。 :) – user7166135