有如下程序: #include<iostream> using namespace std; class TestClass { private: int x,y; pu

题目
有如下程序: include using namespace std; class TestClass { private: int x,y; pu

有如下程序: #include<iostream> using namespace std; class TestClass { private: int x,y; public: TestClass (int i,int j) { x=i; y=j; } void print() { cout<<"print1"<<end1; } void print()const { cout<<"print2"<<end1; } }; int main() { const TestClass a(1,2); a.print(); return 0; } 该程序运行后的输出结果是( )。

A.print1

B.print2

C.print1 print2

D.程序编译时出错

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
【说明】
以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。



【C++代码】
#include?#include?using?namespace?std;class?DrawCircle?{??????//绘制圆形,抽象类? ? ? public: (1);//定义参数为?int?radius,?int?x,?inty? ?virtual~DrawCircle()?{?}};class?RedCircle:public?DrawCircle?{????//绘制红色圆形? ? ? ? public: void?drawCircle(intradius,?int?x,?int?y)?{cout?<?drawCircle?=?drawCircle;? }? ?virtual~shape()?{?}? public:? ?virtual?void?draw()?=?0;};class?Circle:public?Shape?{????//圆形? ? private:? ? ?int?x,y,radius;? ? public:? Circle(int?x,inty,int?radius,DrawCircle?*drawCircle)? (3)? {? this->x?=?x;? ?this->y?=?y;? ? this->radius?=?radius; }? ? ? public:? void?draw(){? drawCircle?-> (4); }};int?main(){Shape?*redCirclenew?Circle(100,100,10,????(5)????);//绘制红色圆形? Shape?*greenCircle=new?Circle(100,100,10, (6)??);//绘制绿色圆形redCircle >draw();? ?greenCircle?->draw();? ?return?0;}


答案:
解析:
(6)(1)void drawCircle (int radius,int x,int y)
(2)DrawCircle*drawCircle
(3)drawcircle
(4)drawCircle(radius,x,y)
(5)new RedCircle()
(6)new GreenCircle()【解析】
第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
第三空这里填drawcircle,用-> drawcircle来引用父类的成员。
第四空调用drawCircle(radius,x,y)方法。
第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

第2题:

有下列程序:includeusing namespace std;class TestClass{private:int x,y;public:Te

有下列程序: #include<iostream> using namespace std; class TestClass { private: int x,y; public: TestClass (int i,int j) { x=i; y=j; } void print() { cout<<"printl"<<endl; } vo

A.print1

B.print2

C.pfint1 print2

D.程序编译时出错


正确答案:B
解析: 由主函数main入手,定义TestClass型的常对象a,然后调用对象a中的成员函数print()。因为在C++中,如果一个对象被声明为常对象,则不能调用该对象中的非const型的成员函数。所以,这里调用的是对象中的const型成员函数“void print ()const”,输出为print2。

第3题:

有下列程序:includeusing namespace std;c1ass TestClass{private;char c;public:Tes

有下列程序: #include<iostream> using namespace std; c1ass TestClass { private; char c; public: TestClass(char n):c(n){} ~TeStClass() { cout<<c } }; class TestClass1:public TestClass {

A.xy

B.yx

C.x

D.y


正确答案:A
解析: 题目中程序TestClass为基类,TestClass1为派生类。在主函数中定义TestClass1对象obj('x'),“TestClass1(char n):TestClass(n+1),c(n){}”,所以先输出x,然后调用基类构造函数,′x′+=′y′,所以输出y,即答案为xy。

第4题:

如下程序的输出结果是includevoid fun(int & X,inty){intt=x;x=y;y=t;}int main(){in

如下程序的输出结果是 #include<iostream> void fun(int & X,inty){intt=x;x=y;y=t;} int main( ){ int a[2]={23,42}; fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<std::endl; return 0; }

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B
解析:参数X是引用传递,传递的是地址:参数Y是值传递,函数fun( )是做X与Y值交换,交换后X的值要被回传给a[1],此时a[1]=a[0]=23。

第5题:

有如下程序:include void fun(int& x, int y){int t=x;x=y;y=t;}int main (){int

有如下程序: #include <iostream> void fun(int& x, int y){int t=x;x=y;y=t;} int main () { int a[2]={23,42}; fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<std::endl; return 0; } 执行后的输出结果是

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B
解析:本题考核函数的调用以及参数值的传递。函数fun中的第一个参数采用引用传值方式,函数中对形参值的改变同样作用于实参上;第二个参数采用按值传值方式,函数中对形参的操作不会影响到实参。所以main函数中调用fun函数后,a[1]的值被修改为a[0]的值,而a[0]的值没有改变。

第6题:

有如下程序:includeusing namespace std;class TestClass{private;char c;public;Tes

有如下程序: #include<iostream> using namespace std; class TestClass { private; char c; public; TestClass (char n):c(n){} ~TestClass () { cout<<c; } }; class TestClass1:public TestClass { Private: char c; public: TestClass1(char n):TestClass (n+1),c(n){} ~TestClass1() { cout<<c; } }; int main() { TestClass1 obj('x'); return 0; } 执行上面的程序输出( )。

A.xy

B.yx

C.x

D.y


正确答案:A
解析:题目中程序TestClass为基类,TestClass1为派生类。在主函数中定义TestClass1对象obj('x'),“TestClass1(charn):TestClass(n+1),c(n){}”,所以先输出x,然后调用基类构造函数,'x'+1='y',所以输出y,即答案为xy。

第7题:

有如下程序:includeusing namespqce Std;class TestClass{private;Char C;public;Tes

有如下程序: #include<iostream> using namespqce Std; class TestClass { private; Char C; public; TestClass(char n):c(n){} ~TestClass() { cout<<c; }; class TestClassl:public TestClass { private: Char C; public:

A.xy

B.yx

C.x

D.y


正确答案:A
解析: 本题中TestClass为基类,TestClassl为派生类。在主函数中定义TestClassl对象obj(‘x’),“TestClassl(char n):TestClass(n+1),c(n){}”,所以选输出x,然后调用基类构造函数,’x’+1=‘y’,所以输出y,即答案为xy。

第8题:

有如下程序:includeusing namespace std;Class TestClass{private:int x,y;public:Te

有如下程序: #include<iostream> using namespace std; Class TestClass { private: int x,y; public: TestClass(int i,int j) { x=i; y=j; } void print() { cout<<“print1”<<endl; } void print()const { cout<<”prin

A.printl

B.print2

C.printl print2

D.程序编译时出错。


正确答案:B
解析: 本题定义TestClass型的常对象a,然后调用对象a中的成员函数print()。因为在C++中,如果一个对象被声明为常对象,则不能调用镇对象中的非const型的成员函数。所以,这里调用的是对象中的const型成员函数“void print()const”,输出为print2。

第9题:

有如下程序:includevoid fun(int&x, int y){int t=x; x=y; y=t;}int main(){int

有如下程序: #include<iostream> void fun(int&x, int y){int t=x; x=y; y=t;} int main() { int a[2]={23,42}; fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<std::end1; return 0; } 执行后的输出结果是( )。

A.42,42

B.23,23

C.23,42

D.42,23


正确答案:B