下列代码中,d1->work(); 和 d2->work(); 输出不同结果的主要原因是( )。

ua309015 单选题 共 个子题
class Device {
public:
    virtual void work() {
        cout << "Device is working" << endl;
    }
    virtual ~Device() {}
};

class Printer : public Device {
public:
    void work() override {
        cout << "Printer is printing" << endl;
    }
};

class Scanner : public Device {
public:
    void work() override {
        cout << "Scanner is scanning" << endl;
    }
};

int main() {
    Device* d1 = new Printer();
    Device* d2 = new Scanner();

    d1->work();
    d2->work();

    delete d1;
    delete d2;
    return 0;
}
/ 12
A

Printer 和 Scanner 使用了相同的构造函数。

B

work() 是虚函数,且 d1 和 d2 实际指向不同派生类对象,发生动态绑定。

C

d1 和 d2 是不同的指针变量。

D

程序中使用了 delete 释放对象。

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧