问题 单项选择题

若有如下程序:
#include<iostream>
using namespace std;
class TestClass1

private:
int a;
public:
TestClass1(int i)

a=i;

void disp()

cout<<a<<",";

;
class TestClass2

private:
int b;
public:
TestClass2(int j)

b=j;

void disp()

cout<<b<<",";

;
class TestClass3:public TestClass2,public TestClass1

private:
int c;
public:
TestClass3(int k):TestClass1(k-2),TestClass2(k+2)

c=k;

void disp()

TestClass1::disp();
TestClass2::disp();
cout<<c<<endl;

;
int main()

TestClass3 obi(10);
obj.disp();
return 0;

程序执行后的输出结果是( )。

A.10,10,10

B.10,12,14

C.8,10,12

D.8,12,10

答案

参考答案:D

解析: 由主函数mian入手,首先定义TestClass3的对象obj,参数为10。其中TestClass3为TestClass1和TestClass2的派生类。然后调用disp成员函数。Disp中首先执行“TestClass1::disp();”,然后执行“TestClass2::disp();”,最后执行输出语句“cout<<c<<endl;”。TestClass1(k-2),所以第一个输出8,TestClass2(k+2),第二个输出12,最后一个本类中的输出即为10。

判断题
单项选择题