指向对象的指针可以用*来取出该对象吗?


 HourlyWorker hw1(2, 8);
    PieceWorker pw1 = { 3,3 };
    Employee* em[2] = {&hw1,&pw1};
    std::cout << "the overall wage of each worker:" << std::endl;
    std::cout << em[0]->earnings() << std::endl << em[1]->earnings();

这里Employee是抽象基类,HourlyWorker和PieceWorker是派生出的两个具体类。earnings是都有的虚方法,这里除了em[0]->earnings().我用*em[0].earning()是错误的,不知道为什么?

有用请采纳,点击右侧采纳即可;
因为em[0]和em[1]是Employee类型的指针,而earnings是Employee类中的虚函数,所以可以通过em[0]->earnings()来调用。而em[0].earnings()是不能正确调用的,因为em[0]是指针类型,需要使用->来谿用成员函数。