c – 在此放置新的
发布时间:2020-12-16 10:52:44 所属栏目:百科 来源:网络整理
导读:我看到了一些这样的代码: class BaseClass{public: BaseClass(int param);};class Derived: public BaseClass{};BaseClass::BaseClass(int param){ new (this) Derived;} 代码试图做什么?我认为它会创建一个派生类对象.但是,背后的逻辑是什么?我想当我们
我看到了一些这样的代码:
class BaseClass { public: BaseClass(int param); }; class Derived: public BaseClass { }; BaseClass::BaseClass(int param) { new (this) Derived; } 代码试图做什么?我认为它会创建一个派生类对象.但是,背后的逻辑是什么?我想当我们调用new BaseClass()时,它只会根据基类大小分配内存.但是,为什么我们仍然可以将此指针传递给新的位置来构造Derived类对象? 编辑: 基本上我认为它试图创建像工厂一样创建对象的东西取决于参数.根据答复,这样做似乎不是一个好习惯. 解决方法
对于大约六个bajillion的原因,这是可怕的未定义行为.不要永远这样做.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |