计算机二级

有如下程序:includeusing namespace std;class XX{protected;int k;public:XX(int n=有如下程序: #include<iostream> using namespace std; class XX{ protected; int k; public: XX(int n=5):k(n){} ~XX(){cout<<"XX";} Virtual void f()cons=0; }; inline void XX::f()const{cout<<k+

题目
有如下程序:includeusing namespace std;class XX{protected;int k;public:XX(int n=

有如下程序: #include<iostream> using namespace std; class XX{ protected; int k; public: XX(int n=5):k(n){} ~XX(){cout<<"XX";} Virtual void f()cons=0; }; inline void XX::f()const{cout<<k+3;} class YY:public XX{ public:

A.28XX

B.28YYXX

C.-33XX

D.-33XXYY

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

第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题:

有如下程序:include using namespace std;class Base{ protected: int i;public: int

有如下程序: #include <iostream> using namespace std; class Base { protected: int i; public: int j; }; class Derived:public Base {int m; public: int n; }; int main() { Derived d; d.i=0;//[1]d.j=0;//[2]d.m=0;//[3]d.n=0;//[4]return 0; } 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是______ 。

A.[1]和[2]

B.[1]和[3]

C.[2]和[3]

D.[2]和[4)


正确答案:B
解析:i是Derived的保护成员,m是私有成员。

第3题:

有如下程序:include using namespace std;class x{protected: int a;public: x() { a

有如下程序: #include <iostream> using namespace std; class x { protected: int a; public: x() { a=1; } }; class x1 : virtual public x { public: x1() { a+=1; cout<<a; } };

A.1

B.123

C.242

D.244


正确答案:D
解析:本题程序中引入了虚基类。在主函数中,执行语句“yobj;”时,先执行虚基类x的构造函数,使a=1,然后执行类x1的构造函数,使a=2,并输出值2。再执行类x2的构造函数,使a=4,并输出值4。最后执行类y的构造函数,输出值4。

第4题:

有如下程序:includeusingnamespacestd;classXX{protected: intk;public: XX(intn=5):

有如下程序: #include <iostream> using namespace std; class XX { protected: int k; public: XX(int n=5):k(n){} ~XX() { cout<<"XX"; } virtual void f() const=0; }; inline void XX::f()

A.28XX

B.28YYXX

C.-33XX

D.-33XXYY


正确答案:A
解析:本题中,&p是一个对象指针,通过使用new运算符变成了指向派生类YY的对象指针。所以当建立并初始化对象指针&p时,程序将调用基类XX的构造函数,给私有数据成员k赋值5。然后调用派生类YY的常成员函数f(),输出值2和8。最后调用基类XX的析构函数输出XX。

第5题:

有如下程序:include using namespace std;class Base{protected:int i;public:int

有如下程序: #include <iostream.h> using namespace std; class Base { protected: int i; public: int j; }; class Derived:public Base { int m; public: int n; }; int main() { Derived d; d.i=0; //[1] d.j=0; //[2] d.m=0; //[3] d.n=0; //[4] return 0; } 其中主函数中有两个赋值语句有错,这两个错误的赋值语句是( )。

A.[1]和 [2]

B.[1]和[3]

C.[2]和[3]

D.[2]和[4]


正确答案:B
解析:此题考查的是类和派生类的访问权限。类Derived公有继承类Base,所以d对基类Base成员的访问权限不变。因数据成员i为保护,故不能通过对象访问;派生类Derived中m变量为私有,同样不能通过对象访问,所以[1]、[3]错误。

第6题:

有如下程序:include using namespace std;Class x{protected: int a;public: x() {a=

有如下程序: #include <iostream> using namespace std; Class x { protected: int a; public: x() { a=1; } }; class x1 : virtual public x { public: x1() { a+=1; cout<<

A.1

B.123

C.242

D.244


正确答案:D
解析:本题程序中引入了虚基类。在主函数中,执行语句“y obj;”时,先执行虚基类x的构造函数,使a=1,然后执行类x1的构造函数,使a=2,并输出值2。再执行类x2的构造函数,使a=4,并输出值4。最后执行类y的构造函数,输出值4。

第7题:

下列程序的执行结果是______。 include class Student { public: Student(int xx){x=

下列程序的执行结果是______。

include<iostream.h>

class Student

{

public:

Student(int xx){x=xx;}

virtual float calcTuition( );

protected:

int x;

};

float Studertt::calcTuition( )

{

return float(x*x);

}

class GraduateStudent:public Student

{

public:

GraduateStudent(int xx):Student(xx){}

float calcTuition( );

};

float Graduatestudent::calcTuition( )

{

return float(x*2);

}

void main( )

{

Student s(20);

GraduateStudent gs(30);

cout<<s.calcTuition( )<<" "<<gs.calcTuition( )<<endl;

//计算学生s和研究生gs的学费

}


正确答案:400 60
400 60

第8题:

有以下程序:include using namespace std; class Base { public: Base() { K=0; } int

有以下程序:

include<iostream>

using namespace std;

class Base

{

public:

Base()

{

K=0;

}

int x;

};

class Derivedl:virtual public Base

{

public:

Derivedl()

{

x=10;

}

};

class Derived2:virtua1 public Base


正确答案:20。
20。 解析: 本题中,虽然Derived1和Derived2由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员x只存在一份拷贝,不论在类Derived1中修改,还是在类Derived2中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obi;”时,就会先调用虚基类Base的构造函数,使得x=0,然后执行类Derived1的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。

第9题:

有如下程序:includeusing namespace std;class XX{protected:int k;public:XX(int n=

有如下程序: #include<iostream> using namespace std; class XX { protected: int k; public: XX(int n=5):k(n){}; ~XX() { cout<<"XX": } virtual void f()const=0; }; inline void XX::f()const { cout<<k+3; }; class YY:public XX { public: ~YY() { cout<<”YY”; } void f()const { cout<<k-3; XX::f(); } }; int main() { XX &p=*new YY; P.f(); delete &p; return 0: } 执行上面的程序将输出( )。

A.28XX

B.28YYXX

C.33XX

D.33XXYY


正确答案:A
解析:类YY公有派生于类XX,派生类对象可以替代基类对象向基类埘象的引用进行赋值初始化,XX&p=*new YY语句定义了XX对象p引用,并用YY对象初始化,p并不是YY对象的别名,是XX基类对象的别名,故先调用基类XX的构造函数将k初始化为5,p.f()首先输出k-3即2,然后调用XX::f()输出k+3,即8,delete &p删除p,调用XX的析构函数输出“XX”。