C++,单继承,垃圾值
C++ ,Single Inheritance, Garbage Value
#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();
#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();