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

c – 如何通过构造参数来使用私有继承?

发布时间:2020-12-16 09:35:37 所属栏目:百科 来源:网络整理
导读:一些代码如下: class maven{private: string username;public: maven(string un) { username = un; }};class car : private maven{public: /... do something .../}; 然后我想在对象车中获得一个maven实例. 但是如何用参数构造maven对象呢? 我已经查找了规
一些代码如下:

class maven
{
private:
        string username;
public:
        maven(string un)
        {
            username = un;
        }
};

class car : private maven
{
public:
       /... do something .../
};

然后我想在对象车中获得一个maven实例.
但是如何用参数构造maven对象呢?
我已经查找了规范和注释.

解决方法

如果您的意思是如何构造汽车对象的maven部分,请使用初始化列表:

class car : private maven
{
public:
    // This way
    car() : maven("foo") {
    }

    // Or this way
    car(string username) : maven(username) {
    }
};

值得注意的是,这样你就不会在车内获得maven实例;实际上,汽车本身就是一个内心深处(虽然它并没有告诉任何人).

除非您出于某种原因需要访问maven的受保护成员,否则这种做法并不是最好的.您可能想要考虑聚合类maven的对象,例如:

class car
{
private:
    maven m_maven;
public:
    // Initialize the member with a default parameter
    car() : m_maven("foo") {
    }

    // Or this way
    car(string username) : m_maven(username) {
    }
};

有关简短讨论,请参阅C FAQ lite的this page.

(编辑:李大同)

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

    推荐文章
      热点阅读