假設我有以下三類:繼承和隱式類型轉換
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)
,但是編譯器給了我一個警告,我打了一個運行時錯誤。
編輯:編譯器給我的警告是「以暫時的地址」。這是爲什麼?