-1
我看到这个例子初始化的对象: http://www.cplusplus.com/doc/tutorial/typecasting/#dynamic_cast用不同类
(...)
class Base { virtual void dummy() {} };
class Derived: public Base { int a; };
(...)
Base * pba = new Derived;
Base * pbb = new Base;
(...)
为什么“PBA”为基本对象,如果它正在与衍生初始化?为什么不把它作为派生对象?
Derived * pba = new Derived; // use this instead
而且它只是一个C++的东西吗?
这是*多态*的一个实例。你不能指望我们提供一个完全详细的答案,因为这是一个相当广泛的主题(我相信这里有一些重复)。 – Downvoter
这是dynamic_cast的一个例子。如果你写 _derived * PBA =新的派生; _ 那么这行没有任何意义 _pd = dynamic_cast的(PBA); _ –
如果你同时拥有[一组猫,狗](HTTPS://en.wikipedia .org/wiki/Polymorphism_%28computer_science%29%23Subtyping),并且想让这个集合中的所有动物发出声音,然后你为每个动物调用'Animal :: talk()',但这个调用会产生不同的结果,关于动物的实际分类。 – Dialecticus