C多重继承构造函数
发布时间:2020-12-16 09:49:16 所属栏目:百科 来源:网络整理
导读:我需要了解构造函数.我真的不知道如何表达这个问题,但基本上我需要在最终类的构造函数中执行所有操作,而变量在一个类的构造函数中创建并在另一个类的构造函数中使用.这有用吗,安全吗?示例代码如下. // Init classclass cInit {private: std::string *m_X;pu
我需要了解构造函数.我真的不知道如何表达这个问题,但基本上我需要在最终类的构造函数中执行所有操作,而变量在一个类的构造函数中创建并在另一个类的构造函数中使用.这有用吗,安全吗?示例代码如下.
// Init class class cInit { private: std::string *m_X; public: cInit() { m_X = new std::string; } std::string *getX() { return m_X; } }; // Does this work (?) class cUse { private: std::string *m_X; public: cUse(cInit *x) : m_X( x->getX() ) { } // Final Class - same question here? Does it work? class Final : public cInit,public cUse { public: Final() : cInit(),cUse( this ) { } } 解决方法
由于基本构造函数是按声明顺序调用的,因此将首先调用cInit :: cInit().它的构造函数将分配cInit :: m_X成员.
然后,将调用cUse :: cUse(cInit *)并将cInit :: getX()的调用结果赋给cUse :: m_X.鉴于cInit :: getX()不是虚函数,可以安全地调用它. 换句话说,这段代码没有任何问题.除了它是丑陋的(或者我应该说设计不好?),令人困惑,并且只会在未来的道路上造成麻烦. 希望能帮助到你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |