假设我有以下三个类:
class Animal {};
class Human : public Animal {};
class Dog : public Animal
{
public:
void setOwner(Animal* owner) { this->owner = owner; }
private:
Animal* owner;
};
为什么允许以下行为,究竟发生了什么?
Dog d;
Human h;
d.setOwner(&h); // ?
起初,我尝试像这样强制转换它d.setOwner(&(Animal)h)
,但编译器给了我一个警告,我遇到了一个运行时错误。
编辑:编译器给我的警告是“获取临时地址”。为什么会这样?