C++编程规范之32:弄清楚要编写的是哪种类

摘要:

了解自我:有很多种不同的类。弄清楚要编写的是哪一种。

    不同种类的类适用于不同用途,因此遵循着不同的规则。值类模仿的是内置类型。一个值类应该:

    1.有一个公用析构函数、复制构造函数和带有值语义的赋值。

    2.没有虚拟函数(包括析构函数)。

    3.是用作具体类,而不是基类。

    4.总是在栈中实例化,或者作为另一个类直接包含的成员实例化。

    基类是类层次结构的构成要素。一个基类应该:

    1.有一个公用而且虚拟,或者保护而且非虚拟的析构函数,和一个非公用复制构造函数和复制操作符。

    2.通过虚拟函数建立接口。

    3.总是动态地在堆中实例化为具体派生类对象,并通过一个智能指针来使用。

    不严格地来说,traits类是携带有关类型信息的模版。一个traits类应该:

    1.只包含typedef和静态函数,没有可修改的状态或者虚拟函数。

    2.通常不独立实例化,只作为基类或者成员。

    异常类提供了不寻常的值与引用语义的混合:它们通过值抛出,但应该通过引用捕获。一个异常类应该:

    1.有一个公用析构函数和不会失败的构造函数。

    2.有虚拟函数,经常实现克隆和访问。

    3.从std::exception虚拟派生更好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值