C++试题及答案Word格式文档下载.docx
《C++试题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++试题及答案Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
D、析构函数
C
解析:
定义构造函数作用就就是初始化对象,而析构函数释放对象空间。
虚函数用于完成多态性,友元增加访问方便性。
3、所有在函数中定义的变量,都就是()
A、全局变量
B、局部变量
C、静态变量
D、寄存器变量
B
变量存储类可分为两类:
全局变量与局部变量。
(1)全局变量:
在函数外部定义的变量称为全局变量,其作用域为:
从定义变量的位置开始
到源程序结束。
全局变量增加了函数之间数据联系的渠道,全局变量作用域内的函数,均可使用、修改该全局变量的值,但就是使用全局变量降低了程序的可理解性,软件工程学提倡尽量避免使用全局变量。
(2)局部变量:
在函数内部定义的变量称为局部变量,其作用域为:
到函数结束。
局部变量包含自动变量(auto)静态变量(static)以及函数参数。
auto变量意味着变量的存储空间的分配与释放就是自动进行的。
说明符auto可以省略。
函数中
的局部变量存放在栈空间。
在函数开始运行时,局部变量被分配内存单元,函数结束时,局部变量释放内存单元。
因此,任两个函数中的局部变量可以同名,因其占有不同的内存单元而不影响使用。
这有利于实现软件开发的模块化。
static变量就是定义在函数体内的变量,存放在静态存储区,不用栈空间存储,其值并不随存储空间的释放而消失。
4、假定AB为一个类,则执行“ABa
(2),b:
3],*p:
4];
”语句时调用该类构造函数的次数为()
A、3
B、4
C、5
D、9
解析:
a
(2)调用1次带参数的构造函数,b:
3]调用3次无参数的构造函数,指针没有给它分配空间,没有调用构造函数。
所以共调用构造函数的次数为4。
5、如果表达式++a中的“++”就是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()
A、a、operator++
(1)
B、operator++(a)
C、operator++(a,1)
D、a、operator++()
答案:
D
解析:
运算符的重载,前缀先让变量变化。
调用++a,等价为a、operator++(),注意无参的形式。
后缀的话a++,等价于a、operator(0),带形参,形参名可省。
6、已知fl与f2就是同一类的两个成员函数,但fl不能直接调用f2,这说明()
A、fl与f2都就是静态函数
B、f1不就是静态函数,f2就是静态函数
C、f1就是静态函数,f2不就是静态函数
D、fl与f2都不就是静态函数
普通成员函数可以调用静态函数,相反静态函数不能调用普通成员函数,这与普通
函数与常成员函数相同。
因此选择C项。
7、一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()
A、内联函数
B、重载函数
C、递归函数
D、嵌套函数
A
内联函数特征代码少,频繁调用,执行效率高。
重载函数解决统一接口的问题;
递
归就是子程序调用,程序调用要耗费很多空间与时间,循环/迭代都比递归有效率得多,递归只就是从形式上,逻辑比较简洁。
嵌套函数即反复调用,速度较慢。
所以选择A项。
8、解决定义二义性问题的方法有()
A、只能使用作用域分辨运算符
B、使用作用域分辨运算符或成员名限定
C、使用作用域分辨运算符或虚基类
D、使用成员名限定或赋值兼容规则
解决二义性问题主要要两种方法:
(1)赋值兼容规则;
(2)虚基类。
9、在main函数中可以用p、a的形式访问派生类对象p的基类成员a,其中a就是()
A、私有继承的公有成员
B、公有继承的私有成员
C、公有继承的保护成员
D、公有继承的公有成员
公有成员可以在类外访问,保护类型成员可以在派生类中访问,但不能在类外访问
在main函数中访问,说明a就是公有成员。
只有公有继承时a才能就是公有的,所以D项正确。
10、在C++中不返回任何类型的函数应该说明为()
A、int
B、char
C、void
D、double
无形参或无返回值都可以用void来声明,intchardouble分别就是整型、字符型与实型。
11、若Sample类中的一个成员函数说明如下:
voidset(Sample&
a),则Sample&
a的含义就是()
A、指向类Sample的名为a的指针
B、a就是类Sample的对象引用,用来作函数Set()的形参
C、将a的地址赋给变量Set
D、变量Sample与a按位与的结果作为函数Set的参数
成员函数使用对象的引用作为形参。
该函数的功能就是将已知对象的所有数据成员的值拷贝给相应对象的所有数据成员,不会建立临时对象,这里就是对象的引用所以选择B。
12、要实现动态联编必须()
A、通过成员名限定来调用虚函数
B、通过对象名来调用虚函数
C、通过派生类对象来调用虚函数
D、通过对象指针或引用来调用虚函数
通过基类指针或基类引用来调用虚函数实现动态多态性,静态多态性通过重载来实
现的。
所以选择D项。
13、在派生类中定义虚函数时,可以与基类中相应的虚函数不同的就是()
A、参数类型
B、参数个数
C、函数名称
D、函数体
虚函数在基类与派生类,具有相同的返回类型、形参类型与形参个数,而函数体可以根据不同的派生类或基类实现不同的操作,即不同函数体。
14、实现两个相同类型数加法的函数模板的声明就是()
A、add(Tx,Ty)
B、Tadd(x,y)
C、Tadd(Tx,y)
D、Tadd(Tx,Ty)
实现两个相同类型数加法结果应该与操作数具有相同类型。
进行加法运算后结果也
就是与参数具有相同类型,需要返回值。
A无返回值时要用void,B形参无类型,C形参y没有类型
所以选择D项。
15、下列不就是描述类的成员函数的就是()
A、构造函数
B、析构函数
C、友元函数
D、拷贝构造函数
友元函数虽然不就是成员函数但就是可以访问类所有成员。
构造函数、析构函数与拷贝
构造函数(复制构造函数)都就是类的特殊函数用于对象的创建与撤销,所以选择C项。
16、继承机制的作用就是()
A、信息隐藏
B、数据封装
C、定义新类
D、数据抽象
面向对象设计中的类的特点:
抽象、封装、继承与多态等,继承用于对类的扩展
所以选择C项。
17、已知:
p就是一个指向类A数据成员m的指针,A1就是类A的一个对象。
如果要给m赋值为5,正确的就是()
A、A1、p=5;
B、A1->p=5;
C、A1、*p=5;
D、*A1、p=5;
A中p就是指针即地址,错误;
B选项中A1不就是指针不能使用指向运算符->,错误
;
“*”比“、”级别要高,所以D选项*A1、p=5相当于(*A1)、p=5;
错误。
另外涉及到指向成员函数时注意以下几点:
指向成员函数的指针必须于其赋值的函数类型匹配的三个方面:
(1)参数类型与个数;
(2)返回类型;
(3)它所属的类类型。
成员函数指针的声明:
指向short型的Screen类的成员的指针定义如下:
shortScreen:
:
*ps_Screen;
ps_Screen可以用_height的地址初始化如下:
*ps_Screen=&
Screen:
_height;
类成员的指针必须总就是通过特定的对象或指向改类型的对象的指针来访问。
就是通过使用两个指向成员操作符的指针(针对类对象与引用的、*,以及针对指向类对象的指针的->*)。
18、如果采用动态多态性,要调用虚函数的就是()
A、基类对象指针
B、对象名
C、基类对象
D、派生类名
基类指针或者基类的引用调用虚函数都会产生动态多态性
19、若有以下定义,则说法错误的就是()
inta=100,*p=&
a;
A、声明变量p,其中*表示p就是一个指针变量
B、变量p经初始化,获得变量a的地址
C、变量p只可以指向一个整型变量
D、变量p的值为100
指针变量如同其她变量一样,在使用之前必须先声明。
声明指针变量的格式为:
<类型名>*<变量名>;
其中,<类型名>就是指针变量所指向对象的类型,它可以就是C++语言预定义的类型,也可以就是用户
自定义类型。
<变量名>就是用户自定义的标识符。
符号*表示<变量>就是指针变量。
而不就是普通变量
。
*表示指针,p就是变量,p指向一个整型的变量,值为a的地址值,*p=100。
20、C++语言建立类族就是通过()
A、类的嵌套
B、类的继承
C、虚函数
D、抽象类
类族即同一个类派生出来的类,各个类就是兄弟或父子关系。
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
1、假设inta=1,b=2;
则表达式(++a/b)*b--的值为___。
2
[解析]前缀++或一一表示先使变量值变化,再使用,这与后缀恰恰相反。
但就是编译
coutvv(++a/b)*b--时,先++a/b值为1,后1*b--,先取b=2,结果为2,再让b=1。
2、复制构造函数使用___作为形式参数。
对象的引用[解析]复制构造函数使用对象的引用来初始化一个新对象,避免临时产生对象。
3、通过C++语言中的—机制,可以从现存类中构建其子类。
答案:
继承
[解析]继承概念,从现有的类生成新类,原有的