C++老鸟日记020 嵌套结构,类的嵌套定义

微信公众号: 星点课堂

新浪微博:女儿叫老白

网易云课堂:女儿叫老白

网易云课堂免费课程:《C++跨平台开发中的编译错误》

网易云课堂免费课程:《C++老鸟日记》

----------------------------------------------------------------------------

引言:

----------------------------------------------------------------------------

       在进行类设计的时候,有些功能或接口可能集中属于某一个功能块,而且该部分接口只会在当前类中使用或者提供。这时候,我们就可以通过嵌套的结构或者嵌套类的设计来实现。

 

正文:

----------------------------------------------------------------------------

       嵌套类的设计一般用在紧密相关的两个类中。

       // item.h

       class CGraphItem {

       public:

              ……

              bool deSerializeBinary(QDataStream& ds);

       private:

              // 端子类,用于表示图元上的端子,该类不对外暴露。它提供的功能通过CGraphItem对外提供。CGraphItem仅提供外部所需的接口,其他接口对外隐藏。

              class CTerminal

              {

              public:

                     bool deSerializeBinary(QDataStream& ds);

              };

 

       private:

       CTerminal* m_pTerminal[2];

};

 

// item.cpp
bool CGraphItem::deSerializeBinary(QDataStream& ds)

{

       ……

if (NULL != m_pTerminal[0])

       m_pTerminal[0]->deSerializeBinary(ds);

if (NULL != m_pTerminal[1])

       m_pTerminal[1]->deSerializeBinary(ds);

 

       return true;

}

 

bool CGraphItem::CTerminal::deSerializeBinary(QDataStream& ds)

{

       ……

       return true;

}

       上述代码中,图元类CGraphItem 需要提供图元封装功能,图元上有端子,而图元类只需要把需要对外提供的接口(比如序列化接口deSerializeBinary())暴露出来,而把CTerminal作为私有的类进行了封装。当然也可以把CTerminal类作为public嵌套。这样,外部就可以直接使用该类了。

      

结语:

----------------------------------------------------------------------------

       嵌套结构或嵌套类的设计在软件研发过程中不太常用,但是如果两个类具有密切关系并且独立性不强的化,可以考虑以嵌套的方式进行设计。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女儿叫老白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值