下列代码中,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;}