‹ 上一题 下一题 ›

g6-05198. GESP-6级-2026-06-单选-第02题 未做

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

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;
}
  • A. Printer 和 Scanner 使用了相同的构造函数。
  • B. work() 是虚函数,且 d1 和 d2 实际指向不同派生类对象,发生动态绑定。
  • C. d1 和 d2 是不同的指针变量。
  • D. 程序中使用了 delete 释放对象。
未选择
输入
输出

            
答案