填空题
[程序]
#include<iostream.h>
class A
{
public:
int x,y;
A(int a,int b)
{
x=a;
y=b;
}
virtual void display()
{
cout<<x<<"/t"<<y<<endl;
}
};
class B:public A
{
public:
int z;
B(int a,int b,int c):A(a,b)
{
x=c;
}
void display()
{
cout<<x<<"/t"<<y<<"/t"<<z<<endl;
}
};
class D:public B
{
public:
int m;
D(int a,int b,int c,int d):B(a,b,c)
{
m=d;
}
void display()
{
cout<<x<<"/t"<<y<<"/t"<<z<<"/t"<<m<<"/t"<<endl;
}
};
class E:public A
{
public:
int n;
E(int a,int b,int c):A(a,b)
{
n=c;
}
void display1()
{
cout<<"E::"<<x<<"/t"<<y<<n<<endl;
}
};
void fun(A *p1)
{
p1->display();
}
void main(void)
{
A b0(10,20),*p;
p=&b0;
fun(p);
B b1(30,40,50);
D d1(31;41;51;61);
p=&b1;
fun(p);
p=&d1;
fun(p);
E e1(100,200,300);
p=&e1;
fun(p);
}
执行以上程序后,一共输出
1行,第二行是
2,第四行是
3。
【正确答案】
【答案解析】4;30 40 50;100 200
[解析] main函数创建类A对象b0(10,20),b0.x=10,b0.y=20;
main函数通过指针用b0地址作参数调用fun函数,fun函数调用b0.display()输出x、y值,输出10、20;
main函数创建类B对象b1(30,40,50),b1.A::x=30,b1.A::y=40,b1.z=50;
main函数创建类D对象d1(31,41,51,61),d1.B::A::x=31,d1.B::A::y=41,d1.B::z=51,d1.m=61;
main函数通过指针用b1地址作参数调用fun函数,fun函数调用b1.display()输出x、y、z值,即输出b1.A::x、b1.A::y、b1.z,输出30、40、50;
main函数通过指针用d1地址作参数调用fun函数,fun函数调用d1.display()输出x、y、z、m值,即输出d1.B::A::x、d1.B::A::y、d1.B::z、d1.:m值,输出31、41、51、61;
main函数创建类E对象e1(100,200,300),e1.A::x=100,e1.A::y=200,e1.n=300;
main函数通过指针用e1地址作参数调用fun函数,fun函数调用e1.A::display()输出x、y值,即输出e1.A::x、e1.A::y,输出100、200。