基类指针强转派生类指针 向下转换要求基类得有虚函数,否则编译时会报cannot dynamic_cast ‘qa’ (of type ‘class A’) to type ‘class C’ (source type is not polymorphic) 错误,见代码示例。 代码示例 #include<iostream>#include<string>usingnamespacestd;classA{public:A(){};virtual~A(){};public...
准确来说应该是派生类指针或引用可以隐式转换为基类指针或引用,反过来不成立 class A{};class B : public A{};A& a1 = B();//隐式转换 A* a2 = new B();//隐式转换 B& b = A();//编译错误 B* b = new A();//编译错误 ...
下面是输出的结果,从结果可以看出派生类指针指向基类指针,指针地址会加4,基类指针指向派生类时,指针地址会减4。 base 200672 200676 derived base 200740 200744 Press any key to continue 下面我们看看派生类对象和基类对象的内存是如何组织的,我们在上例的基础上引入2个变量,代码如下: #include <stdio.h>class ...