加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()不是虚函数,可以安全地调用它.

换句话说,这段代码没有任何问题.除了它是丑陋的(或者我应该说设计不好?),令人困惑,并且只会在未来的道路上造成麻烦.

希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读