嘿,我只是想弄清楚使用基类指针调用派生类的方法的概念,但后来我遇到了这个问题。使用基类指针调用函数?
#include <iostream>
using namespace std;
class A {
int a;
public:
A() {}
A(int x) :a(x) {}
void show() {
cout<<"Hi this is base class ::\nvalue of a is "<<a<<endl;
}
};
class B:public A {
int b;
public:
B() {}
B(int x) : b(x) {}
void show() {
cout<<"Hi this is derived class::\n value of b is "<<b<<endl;
}
};
int main() {
A a(20), *a_ptr;
B b(10), *b_ptr;
a_ptr = &b;
a.show();
a_ptr->show();
return 0;
}
a.show()
输出:
Hi this is base class ::
value of a is 20
为接受,但 a_ptr->show()
输出垃圾值
Hi this is base class ::
value of a is -1121246592
任何人都可以解释为什么发生这种情况..
没有生气感到无助后,帮助你,而得到的投票! – Steephen