我不明白如何定義下面的Animal(Animal*)
構造函數。代碼編譯並正確運行。這個指針構造函數是如何定義的?
class Animal {
public:
virtual ~Animal() {}
virtual std::string specie() = 0;
virtual std::string family() = 0;
};
class Rodent : public Animal {
public:
std::string family() override { return "rodent"; }
};
class Rabbit : public Rodent {
public:
std::string specie() override { return "rabbit"; }
};
int main() {
Animal* goffy(new Rabbit());
}
new Rabbit()
回報Rabbit*
其通過繼承Animal*
這樣的構造正在指向自己的指針?
您可能需要仔細檢查您的發佈代碼。鹿從未被定義;因此,我在主函數中出現編譯器錯誤。 – mgarey
請顯示Deer :: Deer() –
的定義修正了錯字,謝謝 – clicky