C++程序设计知识点实例解析智慧树知到期末考试答案章节答案2024年青岛大学_第1页
C++程序设计知识点实例解析智慧树知到期末考试答案章节答案2024年青岛大学_第2页
C++程序设计知识点实例解析智慧树知到期末考试答案章节答案2024年青岛大学_第3页
C++程序设计知识点实例解析智慧树知到期末考试答案章节答案2024年青岛大学_第4页
C++程序设计知识点实例解析智慧树知到期末考试答案章节答案2024年青岛大学_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++程序设计知识点实例解析智慧树知到期末考试答案+章节答案2024年青岛大学基类中的私有数据成员在其公有派生类中,可以被直接访问。()

答案:错函数声明:intarea(intlen=1,intwid=1);和函数声明floatarea(floatr=1);两个函数互为重载函数。()

答案:对友元函数跟类的成员函数一样,都隐含有this指针,自动指向当前对象。()

答案:错设置虚基类的目的是解决二义性问题,通过关键字virtual表示虚基类。()

答案:对继承是面向对象程序设计实现软件重用的重要方法。()

答案:对派生类的成员可以直接访问基类的私有成员。()

答案:错C++语言是既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言。()

答案:对析构函数和构造函数都可以重载。()

答案:错类的继承关系中,派生类继承了基类的所有成员,包括基类的析构函数和构造函数。()

答案:错C++中字符串类型属于基本数据类型,string是C++关键字,因此在程序中可以直接使用string声明变量。()

答案:错抽象类除了可以产生新的派生类,还可以直接创建抽象类对象。()

答案:错析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。()

答案:对在类中,如果不做特别说明,所有成员的访问权限默认均为公用成员。()

答案:错构造函数是在建立对象时由系统自动执行的,且只执行一次。()

答案:对输入/输出流运算符">>"和"<<"只能重载为友元运算符。()

答案:对已知:inta=10;若有定义intconst*p=&a;则执行语句*p=100;后a的值被更改为100。()

答案:错若有定义:inta[2][3];则数组a中第i行第j列(假定i,j已正确定义并赋值)元素可以表示为:*(a+i)+j。()

答案:错任何运算符的重载都可以用友元函数实现。()

答案:错当说明一个union变量时,系统分配给它的内存是其各成员所需内存量的总和。()

答案:错C++对文件的读写操作,即可通过缓冲区进行,也可不通过缓冲区直接进行。()

答案:错

答案:intTEST::

答案:b=2;

答案:5,3,3,5

答案:5,10;10,5;10,5;

答案:Aobj;obj.x=5;

答案:基类构造函数被调用!基类成员:20;派生类构造函数被调用!派生类新增成员:30;正确表示基类中纯虚函数的声明是()

答案:virtualvoidvf()=0;当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的()

答案:public成员

答案:HelloWorld@abc假设Student类中定义了公有数据成员zipCode,且有Students;Student*ps=&s;Student&rs=s;则在类外对公有数据成员zipCode访问错误的是()

答案:rs->zipCode

答案:20将intmax(intx,inty)函数指定为内置函数,需要在函数左端加一个关键字()

答案:inline关于函数重载和虚函数叙述错误的是()

答案:函数重载可以用于构造函数,虚函数也可以用于构造函数

答案:D1类display().D2类display().有函数原型voidfun4(int&);下面选项中,正确的调用是()

答案:intb=100;fun4(b);

答案:基类成员:10;基类成员:20;

答案:带参构造函数被调用!无参构造函数被调用!复制构造函数被调用!假设类Y是类X的派生类,即classY:publicX。当声明Y类的对象和删除Y类的对象时,构造函数和析构函数的调用次序分别为()

答案:X,Y;Y,X下列关于常对象的说法,错误的是()

答案:常对象也可以调用它所属类的普通成员函数,但不允许修改常对象中的数据成员已知:inta[3][4];则下面表达式中不能正确表示第i行第j列(假定i,j已正确定义并赋值)元素的选项是()

答案:*(a+i+j)

答案:B1::show();B2::show();D::show();定义虚基类的说明中,正确的格式是()

答案:classB:virtualpublicA有关析构函数的说法,错误的是()

答案:析构函数和构造函数一样可以有形参iostream中预定义四个流对象,不包括的是()

答案:char有关析构函数的叙述错误的是()

答案:析构函数可以有形参下面标准流操作中,只适用于二进制文件的是()

答案:read成员函数下列关于重载运算符的规则的描述中,错误的是()

答案:重载可以改变运算符的优先级

答案:Base类构造函数!Derived类构造函数!Derived类析构函数!Base类析构函数!关于基类对象和公有派生类对象叙述错误的是()

答案:可以把基类对象赋值给派生类对象引用下列关于抽象基类的说法,错误的是()

答案:抽象基类能定义对象不是构造函数的特征的是()

答案:构造函数必须指定返回值类型

答案:基类成员:10;基类成员:10;派生类新增成员:30;已知:intm=10;下列语句中对m的引用正确的是()

答案:int&x=m;

答案:5,-2,-7在类定义的外部,可以被访问的成员有()

答案:public的类成员设置虚基类的目的是()

答案:消除重复继承在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()

答案:构造函数对构造函数的描述错误是()

答案:构造函数可以有参数,所以也可以有返回值

答案:@abc不论派生类以何种方式继承基类,都不能直接使用基类的()

答案:private成员

答案:HelloVis已知file.txt中内容如下所示:1001LiMing181002WangGang221003ZhangKai20则下面程序的运行结果为(

)structSTU{intno;

stringname;

intage;};intmain(){ifstreamfin("file.txt");

STUtemp;

fin>>temp.no>>>>temp.age;

while(!fin.eof())

{if(temp.age<20)

cout<>temp.no>>>>temp.age;

}

fin.close();

return0;}

答案:1001-LiMing-18要求以二进制方式打开输出文件file.dat,该文件位于D盘根目录下(D:\file.dat),下列打开方式正确的是()

答案:ofstreamoutfile("D:\\file.dat",ios::binary);C++中,打开文件就是将这个文件与一个()建立关系,关闭文件就是取消这种关联。

答案:流对象有下面程序片段:stringss;getline(cin,ss);cout<答案:HelloVisual下列流类函数中,能实现对文件写操作的是()

答案:put成员函数下列关于ostream类成员函数ostream&write(char*buffer,intcount);描述正确的是()

答案:将buffer所指向内存空间中连续count个字节的内容写入输出流中下面程序运行后,文件file.dat中的内容为(

)structSTU{intno;

stringname;

intage;};intmain(){ofstreamfout("file.dat",ios::binary);

STUs[3]={{1001,"LiMing",18},{1002,"WangGang",22},{1003,"ZhangKai",20}};

for(inti=0;i<3;i++)

if(s[i].age>20)

fout.write((char*)&s[i],sizeof(STU));

fout.close();

return0;}

答案:1002WangGang22的二进制形式标准流对象cin、cout、cerr和clog中,用于与标准输入设备(键盘)连接的是()

答案:cin下列关于istream类成员函数istream&read(char*buffer,intcount);描述正确的是()

答案:从输入流中读取连续count个字节的内容存放到buffer所指向的内存空间中类模板可以生成若干个模板类,每个模板类又可定义若干个对象。()

答案:对声明函数模板时,template与函数定义不能分开,两者之间不能插入其它任何语句。()

答案:对C++使用模板可以减少重复劳动,提高代码重用率()

答案:对C++语言中模板分为函数模板和类模板两种。()

答案:对有如下类模板声明:templateclassTanyTemp{public:

TanyTemp(Tx1,Ty1)

{x=x1;y=y1;}

private:

Tx,y;};则执行语句TanyTempiobject(23,32);生成的模板类为()

答案:TanyTemp所有模板声明都是以template<typename类型参数>开头,其中关键字typename也可换为关键字class。()

答案:对有下面程序片段:floatarr[]={3.1,6.2,9.3,8.4,0.5,4.7,2.8,1.9};intn1=sizeof(arr)/sizeof(float);charstr[]="bacdef";intn2=sizeof(str)/sizeof(char);假定采用函数模板设计统一的排序函数sortData,使得函数调用sortData(arr,n1)和sortData(str,n2)能够分别完成对数组arr以及数组str按元素数值(或ASCII码)从小到大的排序,则函数模板SortData中类型参数的个数至少应为()

答案:1一个函数模板只能生成一个模板函数。()

答案:错下列关于类模板定义中的类型参数说法正确的是()

答案:三者皆可下列关于类模板说法正确的是()

答案:类模板实例化时,编译器将根据给出的模板实参生成具体的类在继承关系中,下列函数中能被派生类继承的是()。

答案:基类成员运算符重载函数下面程序的运行结果是()classB1{public:

virtualvoidshow()

{cout<<"B1::show()"<<";";

}};classB2{public:

voidshow()

{cout<<"B2::show()"<<";";

}};classD:publicB1,publicB2{public:

voidshow()

{cout<<"D::show()"<<";";

}};intmain(){B1b1;

B2b2;

Dd;

b1.show();

b2.show();

d.show();

return0;}

答案:B1::show();B2::show();D::show();派生类中重新定义虚函数时,不能与基类中的虚函数保持一致的是()

答案:函数体下面有关抽象类描述错误的是()

答案:抽象类可以创建对象下列函数中,不具有自身类隐含指针this的是()

答案:静态成员函数下列有关继承关系中虚函数,描述正确的是()

答案:函数名相同、参数相同、返回值类型相同下列函数中可以声明为虚函数的是()

答案:析构函数基类中的虚函数,在派生类中()

答案:无论是否重新定义,都默认为虚函数下列对虚函数的访问方式中,能够在运行时动态绑定具体类的虚函数,从而实现类的多态性的是()

答案:基类指针->虚函数下面程序的运行结果是(

)classB1{public:

virtualvoidshow()

{cout<<"B1::show()"<<";";

}};classB2{public:

voidshow()

{cout<<"B2::show()"<<";";

}};classD:publicB1,publicB2{public:

voidshow()

{cout<<"D::show()"<<";";

}};intmain(){B1b1;

B2b2;

Dd;

B1*bp;

bp=&d;

bp->show();

return0;}

答案:D::show();派生类对象直接访问同名成员,在下列情形中不会出现二义性的是()

答案:单继承中,直接基类和间接基类各自声明有同名的成员,派生类并未声明该同名成员;单继承中,派生类和直接基类各自声明有同名的成员有以下程序片段:classBase{private:inta;

protected:

intb;

public:

Base(inti=0,intj=0):a(i),b(j)

{}};classDerived:publicBase{private:intc;

protected:

intd;

public:

Derived(inti=0,intj=0,intm=0,intn=0):Base(i,j),c(m),d(n)

{}};intmain(){Derivedobj;

obj.a=1;//①

obj.b=2;

//②

obj.c=3;

//③

obj.d=4;

//④

return0;}则主函数中所有语法有误的语句是(

答案:①②③④重复继承关系中,若公共基类被声明为其直接派生类的(),则能保证后代派生类中只保留一份该公共基类的成员。

答案:虚基类具有虚基类的派生类在创建对象时,最先被调用的是()。

答案:虚基类的构造函数公有继承方式下,类A是类B的虚基类,则类B声明的正确形式是()

答案:classB:virtualpublicA下列关于继承方式public的描述错误的是()。

答案:基类中的private成员在派生类中仍为private成员有以下程序片段:classBase{private:inta;

protected:

intb;

public:

Base(inti,intj):a(i),b(j)

{}};classDerived:publicBase{private:intc;

protected:

intd;

public:

Derived(inti,intj,intm,intn):Base(i,j),c(m),d(n)

{}

voidfun()

{cout<答案:①C++的继承性允许派生类继承基类的()。

答案:所有特性,并允许增加新的特性或重定义基类的特性基类中的公有和保护成员在公有派生类中将成为()。

答案:仍然相应保持为公有成员和保护成员有以下程序片段:classA{private:inta;

public:

A(inti=0):a(i)

{}};classB{private:intb;

public:

B(intj=0):b(j)

{}};classC:publicA{private:

intc;BBobj;

public:

C(inti,intj,intk):c(k),Bobj(j),A(i)

{}};intmain(){CCobj(1,2,3);

return0;}则主函数中对象Cobj在创建时,构造函数调用顺序从先到后依次是()

答案:类A构造函数、类B构造函数、类C构造函数下列关于类成员运算符重载和友元运算符重载说法正确的是()

答案:成员运算符重载函数中具有this指针,友元运算符重载函数中不具有this指针下标运算符[]在类中既可以重载为友元也可以重载为类成员。()

答案:错假定复数类MyComplex声明如下:classMyComplex{

floatreal,imag;public:

MyComplex(floatr=0,floati=0);

MyComplex(constMyComplex&other);

voidPrint()const;MyComplexoperator+(constMyComplex&other);friendMyComplexoperator*(constMyComplex&c1,constMyComplex&c2);};有MyComplexX(1,2),Y(3,4),Z(5,6);则对表达式X+Y;以及X*Z;理解正确的是(

答案:X.operator+(Y);

operator*(X,Z);重载的运算符保持原来的优先级和结合性以及操作数的个数。()

答案:对假定类Sample中重载运算符>>,则运算符>>在类Sample中正确的声明形式为()

答案:friendistream&operator>>(istream&input,Sample&obj);下列运算符中不能重载的是()

答案:sizeof假定类TEST中重载运算符<<,则运算符<答案:friendostream&operator<<(ostream&output,constTEST&obj);下列运算符必须重载为类成员函数的是()

答案:=下列函数中不能重载的是()

答案:析构函数假定复数类MyComplex声明如下:classMyComplex{

floatreal,imag;public:

MyComplex(floatr=0,floati=0);

MyComplex(constMyComplex&other);

voidPrint()const;MyComplexoperator+(constMyComplex&other);friendMyComplexoperator*(constMyComplex&c1,constMyComplex&c2);};有MyComplexX(1,2),Y(3,4),Z(5,6);则对表达式X+Y*Z;的理解正确的是(

答案:X.operator+(operator*(Y,Z));下列关于常类型const的叙述错误的是()。

答案:通过常对象可以调用一般成员函数下列关于静态成员的描述错误的是()。

答案:静态数据成员定义后必须在类体内进行初始化下列关于数据共享在类中描述正确的是()。

答案:类通过静态数据成员实现类对象间的数据共享;类通过友元声明实现类内数据向外界友元函数的共享下列关于常成员的叙述正确的是()。

答案:常成员函数不能更新对象的状态下列函数中具有当前类的隐含指针this的是()。

答案:构造函数;析构函数下面程序中横线部分应填入的内容是(

)classTEST{public:TEST(doubled):data(d){}voidPrint(){cout<<data<<endl;}staticintcount;private:doubledata;};

count=0;

答案:intTEST::假定Sample类中的成员函数show空参无返回值,且不会更改Sample类中数据成员的值,则show函数在类内正确的声明形式是()

答案:voidPrint()const;有如下类声明:classSample{

intk;constintm;public:Sample(intk1,intm1);};则下列构造函数的定义形式中错误的是()

答案:Sample::Sample(intk1,intm1):k(k1){m=m1;}下列关于友元关系描述正确的是()。

答案:友元不是类的成员,但具有和类的成员函数一样的数据访问权限下面程序的执行结果是()classSample{

intn;public:Sample(inti){n=i;}friendintadd(Sample&s1,Sample&s2);};intadd(Sample&s1,Sample&s2){

returns1.n+s2.n;}intmain(){

Samples1(10),s2(20);cout<答案:30作用域运算符::只能用于类成员名的所属类限定。()

答案:错下列关于析构函数描述正确的是()

答案:析构函数既没有参数也不可重载若类AB的声明中没有析构函数和构造函数,则系统会自动为类AB添加缺省的析构函数~AB(){};和构造函数AB(){};()

答案:对访问类对象成员或结构变量成员时,使用的运算符有.和->。()

答案:对有如下程序片段:classSample{

intn;

protected:

intm;public:Sample(inti=0,intj=0):n(i),m(j){}voidsetValue(intn0,intm0){n=n0;m=m0;}};int

main(){SampleObj;

//①

Obj.n=3;

//②

Obj.m=4;

//③

Obj.setValue(3,4);//④

return0;}则主函数中有误的语句是()

答案:②③类定义中数据成员初值的设定既可以在声明数据成员时进行,也可以在构造函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论