c++,解释一下运行结果

来源:百度知道 编辑:UC知道 时间:2024/09/24 10:09:19
#include <iostream>
using namespace std;
class A {
int a;
public:
A():a(9){}
virtual void print() const {cout<<a;};
};
class B:public A {
char b;
public:
B() {b='S';}
void print () const {cout<<b;}
};
void show (A &x){x.print();}
int main()
{A d1,*p;
B d2;
p=&d2;
d1.print();
d2.print();
p->print();
show(d1);
show(d2);
return 0;
}

A d1,*p;//申明,A类构造函数什么都不作,只是初始话a=9;
B d2;//申明d2,即实例化一个对象,此时B的构造函数B() {b='S';},即b=‘s’;
p=&d2;p

d1.print();//输出a; 9
d2.print();//输出b s
p->print();//输出b; s
show(d1); 9
show(d2); s

9SS9S
print() 是虚函数,所以 p->print() 和 show(d2) 都是在调用 B::print 。

楼上的分析正确