C++复习资料 选择题
PTA
2-1
下列函数中,(C)不能重载。 (2分) A. 成员函数 B. 非成员函数 C. 析构函数 D. 构造函数
2-2
下列对重载函数的描述中,(A )是错误的。 (2分) A. 重载函数中不允许使用默认参数 B. 重载函数中编译根据参数表进行选择 C. 不要使用重载函数来描述毫无相干的函数 D. 构造函数重载将会给初始化带来多种方式
2-3
设A为自定义类,现有普通函数int fun(A& x)。则在该函数被调用时:C (2分) Func(a);
A. 将执行复制构造函数来初始化形参x
B. 仅在实参为常量时,才会执行复制构造函数以初始化形参x C. 无需初始化形参x
D. 仅在该函数为A类的友元函数时,无需初始化形参x
2-4
类成员的默认访问属性是:A (2分) A. private B. protected C. public
D. 以上答案都不对
2-5
所有类都应该有:C (2分) A. 构造函数 B. 析构函数
C. 构造函数和析构函数 D. 以上答案都不对
A a; 2-6
析构函数可以返回:D (2分) A. 指向某个类的指针 B. 某个类的对象
C. 状态信息表明对象是否被正确地析构 D. 不可返回任何值
2-7
对于以下关于友元的说法D (2分)
A. 如果函数fun被声明为类A的友元函数,则该函数成为A的成员函数 B. 如果函数fun被声明为类A的友元函数,则该函数能访问A的保护成员,但不能访问私
有成员
C. 如果函数fun被声明为类A的友元函数,则fun的形参类型不能是A。 D. 以上答案都不对
2-8
对于类之间的友元关系:D (2分)
A. 如果类A是类B的友元,则B的成员函数可以访问A的私有成员 B. 如果类A是类B的友元,则B也是A的友元。
C. 如果类A是类B的友元,并且类B是类C的友元,则类A也是类C的友元。 D. 以上答案都不对。
2-9
友元的作用是A (2分) A. 提高程序的运用效率 B. 加强类的封装性 C. 实现数据的隐藏性 D. 增加成员函数的种类
2-10
给定以下类声明,哪个成员函数可能改变成员变量data? D (2分) class A { public:
void f1 (int d);
void f2 (constint&d); {
data=d; }
void f3 (int d) const; private: int data; }; A. f1 B. f2
C. f3 D. f1和f2 2-1
关于动态绑定的下列描述中,(D)是错误的。 (2分) A. 动态绑定是以虚函数为基础的
B. 动态绑定在运行时确定所调用的函数代码
C. 动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的 D. 动态绑定是在编译时确定操作函数的 2-2
关于虚函数的描述中,(C)是正确的。 (2分) A. 虚函数是一个static 类型的成员函数 B. 虚函数是一个非成员函数
C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型 2-3
关于纯虚函数和抽象类的描述中,(C)是错误的。 (2分) A. 纯虚函数是一种特殊的虚函数,它没有具体的实现 B. 抽象类是指具有纯虚函数的类
C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 2-4
一个类的私有成员B (2分)
A. 只能被该类的成员函数访问
B. 只能被该类的成员函数和友元函数访问
C. 只能被该类的成员函数、友元函数和派生类访问 D. 以上答案都不对 2-5
下列有关继承和派生的叙述中,正确的是:C (2分) A. 派生类不能访问通过私有继承的基类的保护成员 B. 多继承的虚基类不能够实例化
C. 如果基类没有默认构造函数,派生类就应当定义带形参的构造函数 D. 类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 2-6
以下关于C++语言中继承的叙述中,错误的是(D)。 (2分) A. 继承是父类和子类之间共享数据和方法的机制 B. 继承定义了一种类与类之间的关系
C. 继承关系中的子类将拥有父类的全部属性和方法
D. 继承仅仅允许单继承,即不允许一个子类有多个父类
2-1
使用操作符setw对数据进行格式输出时,需要包含(C )文件。 (2分) A. iostream.h B. fstream.h C. iomanip.h D. stdlib.h 2-2
关于动态绑定的下列描述中,(D)是错误的。 (2分) A. 动态绑定是以虚函数为基础的
B. 动态绑定在运行时确定所调用的函数代码
C. 动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的 D. 动态绑定是在编译时确定操作函数的 2-3
关于虚函数的描述中,(C )是正确的。 (2分) A. 虚函数是一个static 类型的成员函数 B. 虚函数是一个非成员函数
C. 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数 D. 派生类的虚函数与基类的虚函数具有不同的参数个数和类型 2-4
关于纯虚函数和抽象类的描述中,(C)是错误的。 (2分) A. 纯虚函数是一种特殊的虚函数,它没有具体的实现 B. 抽象类是指具有纯虚函数的类
C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 2-5
下列描述中,(D)是抽象类的特性。 (2分) A. 可以说明虚函数
B. 可以进行构造函数重载 C. 可以定义友元函数 D. 不能定义该类对象 2-6
cout是由I/O 流库预定义的(B)。 (2分) A. 类 B. 对象 C. 包含文件 D. 常量 2-7
下列表达错误的是(B)。 (2分)
A. B. C. D. 2-8
cout< cout.setf(ios::uppercase) cin.fill('#') 一个类的私有成员B (2分) A. 只能被该类的成员函数访问 B. 只能被该类的成员函数和友元函数访问 C. 只能被该类的成员函数、友元函数和派生类访问 D. 以上答案都不对 2-9 在派生类对基类继承的传递性中,C__是错误的。 (2分) A. 在公有继承方式下,直接派生类对象可以直接调用基类中的公有成员函数,去访问基类 的私有数据成员 B. 在公有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类 的私有数据成员 C. 在私有继承方式下,间接派生类对象可以直接调用基类中的公有成员函数,去访问基类 的私有数据成员 D. 不管是私有继承还是公有继承,基类中的私有成员在派生类的作用域内都是不可能见的。 2-10 下列有关继承和派生的叙述中,正确的是:C (2分) A. 派生类不能访问通过私有继承的基类的保护成员 B. 多继承的虚基类不能够实例化 C. 如果基类没有默认构造函数,派生类就应当定义带形参的构造函数 D. 类的的析构函数和虚函数都不能够被继承,需要在派生类中重新实现 2-11 在C++语言中设置虚基类的目的是(C)。 (2分) A. 简化程序代码 B. 提高程序的运行效率 C. 解决多继承造成的二义性问题 D. 缩短程序的目标代码 2-12 以下关于C++语言中继承的叙述中,错误的是(D)。 (2分) A. 继承是父类和子类之间共享数据和方法的机制 B. 继承定义了一种类与类之间的关系 C. 继承关系中的子类将拥有父类的全部属性和方法 D. 继承仅仅允许单继承,即不允许一个子类有多个父类