动态分配内存
1.若有定义int *p=new int(0),则下列说法正确的是( )。
D.通过运算符new,分配一个整型数据的存储空间,并将其内存地址赋予指针变量
int *p=new int(0)的含义是通过运算符new,分配一个整型数据的存储空间,并将其内存地址赋予指针变量p。
2.以下有关构造函数的叙述中,错误的是( )。
C.在一个类中构造函数有且仅有一个
构造函数的函数名与结构同名,专门用于初始化结构的对象的函数;构造函数在定义对象时自动执行;构造函数可以在类体内声明在类体外实现。构造函数可以有参数、可以重载、因此可以有多个构造函数。
4.下列关于delete运算符的描述中,错误的是
A.它必须用于new返回的指针
B.对一个指针可以使用多次该运算符
C.它也适用于空指针
D.指针名前只用一对方括号,不管所删除数组的维数
【答案】C
【解析】new与delete是配对使用的,delete必须用于new返回的指针。删除一个指针p(delete p;)实际意思是删除了p所指的目标(变量或对象等),释放了它所占的堆空间,而不是删除p本身(指针p本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放),释放堆空间后,p成了空指针。delete不能用于空指针,空指针说明已经被释放了。
【知识点】delete运算符
5.对于int*pa[5];的描述中,正确的是
D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
隐藏答案
【答案】D
【解析】int *pa[5]中pa是一个具有5个元素的指针数组,每个元素是一个int型指针。int(*pa)[5]中pa是一个指向数组的指针,所指向的数组是5个int型元素。
【知识点】指针数组
类与对象
1.以下有关类与对象的叙述中,错误的是( )。
D.只要是某个类的对象,那么该对象就可以访问这个类的所有成员
类是具有相同的属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。对于一个具体的类,它有许多具体的个体,这些个体叫作“对象”。每个类的属性和操作分为私有和公有两种类型,对象的外部只能访问对象的公有部分,而不能直接访问对象的私有部分。
2.关于对类的描述中,错误的是( )。
C.类就是C语言中的结构类型
类是具有相同的属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。 类是一种用户自己构造的数据类型,但不是C语言中的结构类型;类要先声明后使用、是具有唯一标识符的实体;类是创建对象的样板。
3.下面关于对象概念的描述中错误的是( )。
A.任何对象都必须有继承性
继承是一个类可以获得另一个类的特性的机制,支持层次概念,通过继承,低层的类只需定义特定属于它的特征,而共享高层的类中的特征。类是具有相同的属性和操作的一组对象的集合,对象是属性和方法的封装体,对象间的通信靠消息传递。
1.友元函数的主要作用是( )。
A.提高程序的效率
类友元函数应被看作类的接口的一部分,使用它的主要目的是提高效率,因为它可以直接访问对象的私有成员,从而省去调用类的相应成员函数的开销。
1.在C++中,字符型数据在内存中的存放形式为( )。
C.ASCII
在C++和C语言中,字符型数据在内存中的存放形式为ASCII码。
1.C++语言的跳转语句中,对于break和continue说法正确的是( )。
B. continue语句只应用于循环体中
break语句用于switch语句和循环体中,用于退出switch语句或退出循环;continue语句只应用于循环体中,用于提前结束本次循环。C++中的无条件跳转语句时goto。
1.以下关于运算符重载的描述中,错误的是( )。
D. 成员运算符比友元运算符多一个参数
C++的任何运算都是通过函数来实现的,运算符重载其实就是函数重载,这就是运算符重载的实质。
C++中关键字operator和运算符连用就表示一个运算符函数。
类运算符比友元运算符少一个参数,这是因为类运算符函数作为成员函数时具有this指针。
C++中类运算符的表达形式:
C++中友元运算符的表达形式:
1.源程序文档化要求程序应加注释,注释一般分为序言性注释和 __功能性注释__。
1.重载函数必须有不同的__形参列表__。
1.在C++中输入输出是通过流来完成的,输出操作是将一个对象的状态转换成一个___字符__序列。
1.this指针保证每个对象拥有自己的数据成员,又共享处理这些数据成员的__代码__。
1.所谓“引用”就是将一个新标识符和一块已经存在的_存储区域_相关联,通常用于函数的参数表中或者作为函数的返回值。
1.C++为结构动态分配内存的一般格式是“指针名=__new 结构名_;”当不再使用这个空间时必须用“delete指针名;”释放空间。
1.C++程序中使用string类定义存储字符串的对象时,必须在程序中包含这个类的头文件,即使用语句_#include__。
一、类的继承和派生
2.C++类体系中,不能被派生类继承的有( )。
B.构造函数
构造函数和析构函数是不被继承的,所以一个派生类只能调用它的直接基类的构造函数,当定义派生类的一个对象时,首先调用基类的构造函数,对基类成员进行初始化,然后执行派生类的构造函数。