C++程序设计练习题
一、填空题
1.对象的三大基本特性分别为多态性、(    )、封装性。
2.赋值运算符应重载为(    )函数。
3.用(    )声明的基类称为虚基类。
4.用(    )声明的函数称为虚函数。
5.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的(    )。
6.静态成员是对象的成员,(    )函数不是类的成员。
7.在函数体之前加(    )关键字可以防止覆盖函数改变数据成员的值。
8.一个const对象只能访问(    )成员函数。
9.使用友元函数是为了提高程序效率,且节约了(    )开销。
10.类名为“ClassName”的类,其拷贝构造函数的原型说明是(    )。
11.由关键字private、public和protected限定成员的访问权限分别是(    )、(    )和(    )。缺省关键字时成员的访问权限为(    )。
12.如果想要公共基类在派生类中只有一个拷贝,就要将公共的基类说明为(    );如果虚基类没有默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的(    )函数。
13.静态成员函数是使用关键字(    )说明的成员函数。
14.一个函数的原型声明为“void FunName(int=0, double=0, char='x');”,则调用FunName函数的方法共有(    )种。
15.编译时多态性是通过(    )实现的;运行时多态性是通过(    )实现的。
16.C++通过(    )实现编译时多态性,通过(    )实现运行时多态性。
17.在C++中,声明类的关键字是(    )。
18.声明C++模板的关键字是(    )。
19.调用函数原型声明为“void FunName(short, int=0, float=1.0);”的方法有(    )种。
20.处理C++异常的方法:采用(    )结构。
21.用关键字(    )、(    )和(    )限定的成员,其访问权限分别为:公有的、私有的和保护的。缺省关键字时,成员的访问权限为(    )。
22.在C++中,处理(    )的方法是采用try-catch结构。
23.在C++中,用关键字(    )说明内置函数。
24.在C++中,声明友元函数的关键字是(    )。
25.将公共基类说明为(    )时,多重派生过程中公共基类在派生类中就只有一个拷贝了。
26.在C++中,如果函数调用在前、定义在后,就必须先对函数进行(    )。
27.在成员函数头之后、函数体之前加(    )修饰的成员函数称为类的常成员函数。
28.包含纯虚函数的类称为抽象类,这种类只能用作(    )来派生新类。由于抽象类的特殊性,
我们可以说明抽象类的(    ),但不能说明抽象类的(    )。
29.说明函数类型为“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为(    )。
30.说明静态成员要使用关键字(    )。
31.当函数调用在前定义在后时,必须先对函数进行(    )说明。
32.类名为“ClassN”的类的拷贝构造函数的函数原型说明为(    )。
33.抽象类是包含(    )的类,必须注意:不能说明抽象类的(    ),但可说明抽象类的(    )。
34.流插入运算符<<只能重载为友元函数,重载流插入运算符<<的函数名为(    )。
35.要防止在该成员函数中改变数据成员的值,就要在类的成员函数名之后、函数体之前加上关键字(    )。
36.类和对象的关系可表述为:类是对象的(    ),而对象则是类的(    )。
37.在C++中,三种继承方式的说明符号为(    )、(    )和(    ),如果不加说明,则默认的继承
方式为(    )。
38.如果只想保留公共基类的一个复制,就必须使用关键字(    )把这个公共基类声明为虚基类。
39.若要把void myfun( )定义为类A的友元函数,则应在类A的声明中加入语句(    )。
40.类的静态成员分为(    )和(    )。
41.运算符重载要求保持其原来的操作数个数、(    )、(    )和语法结构。
42.通过关键字(    )可以声明模板,通过关键字(    )指定函数模板的类型参数。
43.请列出C++中两种用户自定义的数据类型:(    )、(    )。
44.构造函数的作用是(    )。
45.后置自增运算符“++”重载为类的成员函数(设类名为ClassName)的形式为(    )。
二、单选题
1.继承机制的作用是(  )
A) 信息隐藏            B) 数据封装            C) 定义新类            D) 数据抽象
2.类的析构函数的作用是(  )
A) 一般成员函数        B) 类的初始化        C) 对象的初始化        D) 删除对象创建的所有对象
3.类的析构函数是在(  )调用的。
A) 类创建时            B) 创建对象时        C) 删除对象时        D) 不自动调用
4.在(  )情况下适宜采用inline定义内联函数。
A) 函数体含有循环语句                    B) 函数体含有递归语句
C) 函数代码少、频繁调用                    D) 函数代码多、不常调用
5.如果类A被说明成类B的友元,则(  )
A) 类A的成员即类B的成员                B) 类B的成员即类A的成员
C) 类A的成员函数不得访问类B的成员    D) 类B不一定是类A的友元
6.在类中声明转换函数时不能指定(  )
A) 参数                B) 访问权限            C) 操作                D) 标识符
7.在公有继承的情况下,基类成员在派生类中的访问权限(  )
A) 受限制            B) 保持不变            C) 受保护            D) 不受保护
8.在C++类体系中,不能被派生类继承的有(  )
A) 转换函数            B) 构造函数            C) 虚函数            D) 静态成员函数
9.假定ClassN为一个类,则执行“ClassN x;”语句时将自动调用该类的(  )
A) 有参构造函数        B) 无参构造函数        C) 拷贝构造函数        D) 赋值构造函数
10.C++语言建立类族是通过(  )
A) 类的嵌套            B) 类的继承            C) 虚函数            D) 抽象类
11.重载一元运算符--为类A的成员运算符,若有类A的对象obj,则表达式--obj被C++编译器解释为(  )。
A) obj.operator -- ( )    B) operator -- (obj)        C) obj::operator -- ( )    D) obj:operator -- ( )
12.以下有四种关于类的说法,其中不正确的是(  )。
A) 构造函数可以指定参数,但不能指定函数类型        B) 一个类可以有多个构造函数
C) 析构函数不可以指定参数,但可以指定函数类型    D) 一个类只能有一个析构函数
13.面向对象程序设计讲求封装性,在C++中封装是借助于(  )实现的。
A) 结构        B) 数组        C) 类        D) 函数
14.下面有四种关于类的说法,其中不正确的是(  )。
A) 一个类可以有多个构造函数            B) 析构函数不可以指定函数类型,但可以指定函数参数
C) 一个类只能有一个析构函数            D) 在一个类中可以说明其它类的对象
15.下列有关基类的叙述中不正确的是(  ),前提为“公有派生”。
A) 基类的公有成员在派生类中仍然是公有的        B) 基类的保护成员在派生类中仍然是保护的
C) 基类的私有成员在派生类中仍然是私有的        D) 基类的私有成员在派生类中是不可访问的
16.以下有四种关于友元的描述,其中错误的是(  )。
A) 类A的友元类B的成员函数都是类A的友元函数    B) 友元函数可以访问该类的私有数据成员
C) 类与类之间的友元关系可以继承                    D) 友元可以提高程序的运行效率
17.C++的封装性是借助于(  )实现的。
A) 函数        B) 数组        C) 结构        D) 类
18.要将--重载为类ClassN的后置友元运算符,那么,要在类中添加的原型说明为(  )。
A) friend  ClassN  operator -- (ClassN &, int);        B) friend  ClassN  operator -- (ClassN &);
C) friend  ClassN  operator -- (int);                D) friend  ClassN  operator -- ( );
19.在公有派生时,下列描述中不正确的是(  )。
A) 派生类的对象可以赋给基类的对象        B) 派生类对象的地址可以赋给指向基类的指针
C) 派生类的对象可以初始化基类的引用
D) 当基类的指针指向派生类对象时,通过该指针可以直接访问派生类中的成员
20.以下关于继承成员的访问属性的叙述中,不正确的是(  )。
A) 基类的保护成员在私有派生类中是私有的        B) 对基类成员的访问必须没有二义性
C) 基类的保护成员在保护派生类中是保护的        D) 基类的保护成员在派生类中是保护的
三、程序改错题(改正下列类中的错误)
1.
class ClassN
{
private:    int nmember;
    ClassN pmember;
public:    ClassN( );
    int ClassN(int x);
}
2.
void main()
{
    char c[] = new char [20];
    delete c;
}
3.
class MyClass
{
private:    int n=1;
    MyClass pO;
public:    MyClass(int a = 0);指向类成员函数的指针
    void ~MyClass(int a);
};
4.
#include <iostream>
using namespace std;
void main()
{
    int & par = new int [6];
    delete par;
    cout >> "主函数End!" << endl;
}
5.
#include <iostream>
using namespace std;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。