1-1将构造函数说明为纯虚函数是没有意义的。
对
1-2抽象类是指一些没有说明对象的类。
错
//抽象类是含有纯虚函数的类
1-3动态绑定是在运行时选定调用的成员函数的。
对
1-4因为静态成员函数不能是虚函数,所以它们不能实现多态。
对
1-5在析构函数中调用虚函数时,采用动态束定。
错
调用析构函数时,已经有完整的定义了,不是函数模板,所以不是动态束定。
1-6在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态束定。
对
1-7虚函数不能是类的静态成员。
对
1-8对于从基类继承的虚函数,派生类也可以不进行重定义。
对
1-9纯虚函数与函数体为空的虚函数等价。
错
2-1关于纯虚函数和抽象类的描述中,( )是错误的。3
- 纯虚函数是一种特殊的虚函数,它没有具体的实现
- 抽象类是指具有纯虚函数的类
- 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
- 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
2-2下列描述中,( )是抽象类的特性。4
- 可以说明虚函数
- 可以进行构造函数重载
- 可以定义友元函数
- 不能定义该类对象
2-3关于动态绑定的下列描述中,( )是错误的。4
- 动态绑定是以虚函数为基础的
- 动态绑定在运行时确定所调用的函数代码
- 动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的
- 动态绑定是在编译时确定操作函数的
2-4关于虚函数的描述中,( )是正确的。3
- 虚函数是一个static 类型的成员函数
- 虚函数是一个非成员函数
- 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
- 派生类的虚函数与基类的虚函数具有不同的参数个数和类型
2-5在公有继承的情况下,在派生类中能够访问的基类成员包括4
- 公有成员
- 保护成员
- 公有成员、保护成员和私有成员
- 公有成员和保护成员
2-6下面叙述不正确的是 1
- 基类的保护成员在派生类中仍然是保护的成员//没有指定派生方式
- 基类的保护成员在公有派生类中仍然是保护的
- 基类的保护成员在私有派生类中仍然是私有的
- 对基类成员的访问必须是无二义性
2-7以下说法中正确的是()2
- 在虚函数中不能使用this指针
- 在构造函数中调用虚函数不是动态联编
- 抽象类的成员函数都是纯虚函数
- 构造函数和析构函数都不能是虚函数
第四个选项:构造函数不可以,析构函数可以
2-9设有如下代码段: 2
class A {
public:
void func1() {
cout << "A1" << endl;
}
virtual void func2() {
cout << "A2" << endl;
}
};
class B : public A {
public:
void func1() {
cout << "B1" << endl;
}
void func2() {
cout << "B2" << endl;
}
};
int main() {
A *a = new B;
a->func1();
a->func2();
}
则输出结果为:
- A1 A2
- A1 B2
- B1 A2
- B1 B2