我不明白下面的 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*
,所以构造函数采用指向自身的指针?
最佳答案
您正在执行 direct initialisation .
表达式new Rabbit()
会返回 Rabbit*
.这Rabbit*
然后将值转换为 Animal*
值,这是可能的,因为 Animal
是 Rabbit
的基类. Animal*
然后将值分配给 goffy
变量。
关于c++ - 这个指针构造函数是如何定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751222/