2016-11-16 6 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 «а», как v2.get_a вместо v1.get_a, она показывает правильный ответ. Новое в C++ btw. Пожалуйста помоги. Благодарю.C++, одиночное наследование, мусоропровод Значение

+1

Что такое 'disp'? Я не вижу этого в вашем коде. –

+1

Также ваше именование немного странно. У вас есть функции с именем 'get', которые фактически не« получают »ничего, кроме значений * set *. –

+0

Прошу прощения, disp была фактически функцией, предназначенной для печати значения переменной c. Забыл добавить его с тех пор, как я редактировал код. Но почему значение мусора отображается, если я уже инициализировал переменную a. Еще раз спасибо. – user7166135

ответ

2

Проблема в том, что у вас есть два разных объекта, которые не связаны друг с другом. Объект v1 не связан с объектом v2, это отдельные и разные объекты. Вы инициализируете Alpha::a с v1.get_a(4), который не инициализирует Beta::a.

Решение вашей проблемы заключается в использовании один объект:

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

Хорошо, отлично! Большое спасибо брату. :) – user7166135

Смежные вопросы