相关疑难解决方法(0)

c ++中的向下转换问题

#include <iostream>
using std::cout;
using std::endl;
class Base
{
public :
    void f();
    void g();

    int mBaseData1;

};

class Derived : public Base
{
public : 


    int mDerivedData1;
};

void main()
{

    Base* base = new Base();
    Derived* derived = (Derived*)(base); // DownCast
    derived->mDerivedData1 = 6;
    cout<< derived->mDerivedData1<<endl; // Result = 6;
}
Run Code Online (Sandbox Code Playgroud)

在此代码中 new base()分配堆中的内存

并将Derived* derived = (Derived*)(base)基数转换为派生的

我们如何使用mDerivedData1?我无法找到为mDerivedData1分配内存的位置,或者当我们调用Derived的构造函数来分配mDerivedData1时?

c++

0
推荐指数
1
解决办法
2207
查看次数

标签 统计

c++ ×1