pta C++ 多态性作业

虚函数是用virtual 关键字说明的成员函数。

T

F

答案正确:2 分

创建提问


1-2

分数 2

作者 何振峰

单位 福州大学

因为静态成员函数不能是虚函数,所以它们不能实现多态。

T

F

答案正确:2 分

创建提问


1-3

分数 2

作者 黄万丽

单位 曲阜师范大学

静态成员函数不能是虚函数,所以不能实现动态多态,即运行时多态。

T

F

答案正确:2 分

创建提问


1-4

分数 2

作者 董俊

单位 燕山大学

派生类中对继承自基类的虚函数会进行重载已实现多态。

T

F

答案正确:2 分


1-5

分数 2

作者 黄淑伟

单位 沈阳师范大学

通过基类指针调用基类和派生类中的同名虚函数时,若该指针指向一个基类的对象,那么被调用的是基类的虚函数。

T

F

答案正确:2 分


1-6

分数 2

作者 黄淑伟

单位 沈阳师范大学

通过基类指针调用基类和派生类中的同名虚函数时,若该指针指向一个派生类的对象,那么被调用的是基类的虚函数。

T

F

答案正确:2 分


1-7

分数 3

作者 黄淑伟

单位 沈阳师范大学

通过基类引用调用基类和派生类中的同名虚函数时,若该引用引用的是一个基类的对象,那么被调用的是基类的虚函数。

T

F

答案正确:3 分


1-8

分数 3

作者 黄淑伟

单位 沈阳师范大学

通过基类引用调用基类和派生类中的同名虚函数时,若该引用引用的是一个派生类的对象,那么被调用的是派生类的虚函数。

T

F

答案正确:3 分


1-9

分数 2

作者 黄淑伟

单位 沈阳师范大学

在面向对象的程序设计中使用多态,能够增强程序的可扩充性 ,即程序需要修改或增加功能的时候,需要改动和增加代码较少。

T

F

答案正确:2 分


1-10

分数 3

作者 黄淑伟

单位 沈阳师范大学

在构造函数和析构函数中调用虚函数,不是多态。编译时即可确定,调用的函数是自己的类或基类中定义的函数 ,不会等到运行时才决定调用自己的还是派生类的函数。

T

F

答案正确:3 分


1-11

分数 3

作者 黄淑伟

单位 沈阳师范大学

构造函数也可以定义为虚函数。

T

F

答案正确:3 分


1-12

分数 3

作者 黄淑伟

单位 沈阳师范大学

类的构造函数可以定义为虚函数。

T

F

答案正确:3 分


1-13

分数 3

作者 何振峰

单位 福州大学

抽象类是指一些没有说明对象的类。

T

F

答案正确:3 分

创建提问


1-14

分数 3

作者 黄淑伟

单位 沈阳师范大学

包含纯虚函数的类叫抽象类。

T

F

答案正确:3 分

关于动态绑定的下列描述中,( )是错误的。

A.

动态绑定是以虚函数为基础的

B.

动态绑定在运行时确定所调用的函数代码

C.

动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的

D.

动态绑定是在编译时确定操作函数的

答案正确:3 分

创建提问


2-2

分数 3

作者 何振峰

单位 福州大学

关于虚函数的描述中,( )是正确的。

A.

虚函数是一个static 类型的成员函数

B.

虚函数是一个非成员函数

C.

基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数

D.

派生类的虚函数与基类的虚函数具有不同的参数个数和类型

答案正确:3 分

创建提问


2-3

分数 3

作者 王秀

单位 福州大学

以下说法中正确的是()

A.

在虚函数中不能使用this指针

B.

在构造函数中调用虚函数不是动态联编

C.

抽象类的成员函数都是纯虚函数

D.

构造函数和析构函数都不能是虚函数

答案正确:3 分


2-4

分数 3

作者 孔德桢

单位 浙大城市学院

设有如下代码段:

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();
}

则输出结果为:

A.

A1 A2

B.

A1 B2

C.

B1 A2

D.

B1 B2

答案正确:3 分


2-5

分数 3

作者 李廷元

单位 中国民用航空飞行学院

下面关于基类与派生类的叙述中,不正确的是____。

A.

派生类一般都用公有派生

B.

对基类成员的访问必须是无二义性的

C.

赋值兼容规则也适用于多重继承的组合

D.

基类的公有成员在派生类中仍然是公有的

答案正确:3 分


2-6

分数 3

作者 李廷元

单位 中国民用航空飞行学院

虚函数必须是类的____

A.

成员函数

B.

友元函数

C.

构造函数

D.

析构函数

答案正确:3 分


2-7

分数 3

作者 李廷元

单位 中国民用航空飞行学院

下列关于虚函数的描述中,正确的是____。

A.

虚函数是一个静态成员函数

B.

虚函数是一个非成员函数

C.

虚函数既可以在函数说明时定义,也可以在函数实现时定义

D.

派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

答案正确:3 分


2-8

分数 3

作者 吕华

单位 河北工业大学

关于虚函数,正确的描述是()。

A.

构造函数不能是虚函数

B.

析构函数不能是虚函数

C.

虚函数可以是友元函数

D.

虚函数可以是静态成员函数

答案正确:3 分


2-9

分数 3

作者 吕华

单位 河北工业大学

派生类中虚函数原型的()。

A.

函数类型可以与基类中虚函数的原型不同

B.

参数个数可以与基类中虚函数的原型不同

C.

参数类型可以与基类中虚函数的原型不同

D.

以上都不对

答案正确:3 分


2-10

分数 3

作者 吕华

单位 河北工业大学

如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是()。

A.

virtual show()=0;

B.

virtual void show();

C.

virtual void show()=0;

D.

void show()=0 virtual;

答案正确:3 分


2-11

分数 3

作者 黄淑伟

单位 沈阳师范大学

以下说法正确的是?

A.

在虚函数中不能使用this指针

B.

在构造函数中调用虚函数,不是动态联编

C.

抽象类的成员函数都是纯虚函数

D.

构造函数和析构函数都不能是虚函数

答案正确:3 分


2-12

分数 3

作者 黄淑伟

单位 沈阳师范大学

不列哪一项不是动态联编实现的条件?

A.

要有说明的虚函数

B.

调用虚函数操作的是指向对象的指针

C.

调用虚函数操作的是对象引用

D.

由对象调用虚函数

答案正确:3 分


2-13

分数 3

作者 黄淑伟

单位 沈阳师范大学

下列哪一项说法是不正确的?

A.

抽象类只能做为其他类的基类

B.

抽象类不能用做参数类型,函数返回类型或显式转换的类型

C.

可以定义指向抽象类的指针和引用,但不能定义抽象类对象

D.

使用抽象类指针和引用,不能指向派生类对象

答案正确:3 分


2-14

分数 3

作者 刘骥

单位 重庆大学

虚基类是为了解决下列哪个问题?()

A.

继承父类实现代码复用

B.

继承父类实现多态

C.

解决多条继承路径公共基类冲突

D.

自动实现深拷贝

答案正确:3 分


2-15

分数 3

作者 李祥

单位 湖北经济学院

关于赋值兼容规则

赋值兼容规则是指在需要基类对象的任何地方, 都可以使用 ▁▁▁▁▁ 派生类的对象来替代。

A.

私有

B.

保护

C.

公有

D.

任何

答案正确:3 分


2-16

分数 3

作者 董俊

单位 燕山大学

下列有关类型兼容规则的描述中,错误的是:

A.

派生类的对象可以隐含转换为基类对象

B.

派生类的对象可以初始化基类的引用

C.

派生类的指针可以隐含转换为基类的指针

D.

派生类的对象可以被基类的对象初始化

答案正确:3 分

6-1 抽象类Shape

分数 17

全屏浏览

作者 傅尔胜

单位 郑州航空工业管理学院

请编写一个抽象类Shape,包括两个纯虚函数,分别为计算面积getArea()和计算周长getPerim()。通过Shape类派生出矩形类Rectangle和圆类Circle,并计算各自的面积和周长。

测试用例具体要求:输入1表示测试矩形类,之后输入矩形长和宽。输入2表示测试圆类,之后输入圆半径。

Shape类定义如下

class Shape {
    public:
        virtual double getArea()=0;
        virtual double getPerim()=0;
};

裁判测试程序样例: 

#include <iostream>
using namespace std;
const double PI=3.14;

class Shape {
    public:
        virtual double getArea()=0;
        virtual double getPerim()=0;
};

/* ------请在这里填写答案 ------*/

int main() {
    Shape *p;
    int n;
    double w,h,r;
    scanf("%d",&n);
    switch(n) {
        case 1: {
            cin>>w>>h;
            Rectangle rect(w,h);
            cout<<"area="<<rect.getArea()<<endl;
            cout<<"perim="<<rect.getPerim()<<endl;
            break;
        }
        case 2: {
            cin>>r;
            Circle c(r);
            cout<<"area="<<c.getArea()<<endl;
            cout<<"perim="<<c.getPerim()<<endl;
            break;
        }
    }

    return 0;
}

输入样例1:

在这里给出一组输入。例如:

1
4 5

输出样例1:

在这里给出相应的输出。例如:

area=20
perim=18

输入样例2:

在这里给出一组输入。例如:

2
5

输出样例2:

在这里给出相应的输出。例如:

area=78.5
perim=31.4

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值