有一个子类继承自一个普通超类和一个带有虚拟function.When的超类,我将子类指针转换为普通超类指针,当我使用另一个超类指针指向子类时,它将工作correctly.But,然后将指针转换到这个普通超类,它会打印错误的答案。
#include <iostream>
using namespace std;
class base{
public:
virtual bool test1() = 0;
};
class base2{
public:
int a;
base2(int p) : a(p) {}
};
class son:public base, public base2 {
public:
bool test1() {
return true;
}
son(int p) : base2(p) {}
};
void out(base2* p) {
cout << p -> a;
}
int main()
{
/* if I use this, it will print a wrong number,such as -1359748056
base * o = new son(9);
out((base2*)o);
*/
/* if I use this, it will print 9
out(new son(9));
*/
return 0;
}
我不知道Why.Converting子类到父类是否安全?
发布于 2022-08-21 05:55:34
https://stackoverflow.com/questions/73431932
复制相似问题