类和函数:设计与声明

博客提及影响高效类设计的主要因素,但未展开具体内容。在信息技术领域,高效类设计至关重要,了解其影响因素有助于提升设计质量和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

影響高效類設計的主要因素:

  • 对象将如何被创建和摧毁?它将极大地影响构造函数和析构函数的设计,以及自定义的operator new, operator new[], operator delete, 和operator delete[]。(条款M8描述了这些术语的区别)
  • 对象初始化和对象赋值有什么不同?答案决定了构造函数和赋值运算符的行为以及它们之间的区别。
  • 通过值来传递新类型的对象意味着什么?记住,拷贝函数负责对此做出回答。
  • 新类型的合法值有什么限制?这些限制决定了成员函数(特别是构造函数和赋值运算符)内部的错误检查的种类。它可能还影响到函数抛出的例外的种类以及函数的例外规范(参见条款M14),如果你使用它们的话。
  • 新类型符合继承关系吗?如果是从已有的类继承而来,那么新类的设计就要受限于这些类,特别是受限于被继承的类是虚拟的还是非虚拟的。如果新类允许被别的类继承,这将影响到函数是否要声明为虚拟的。
  • 允许哪种类型转换?如果允许类型a的对象隐式转换为类型b的对象,就要在类a中写一个类型转换函数,或者,在类b中写一个可以用单个参数来调用的非explicit构造函数。如果只允许显式转换,就要写函数来执行转换功能,但不用把它们写成类型转换运算符和或单参数的非explicit构造函数。(条款M5讨论了用户自定义转换函数的优点和缺点)
  • 什么运算符和函数对新类型有意义?答案决定了将要在类接口中声明什么函数。
  • 哪些运算符和函数要被明确地禁止?它们需要被声明为private。
  • 谁有权访问新类型的成员?这个问题有助于决定哪些成员是公有的,哪些是保护的,哪些私有的。它还有助于确定哪些类和/或函数必须是友元,以及将一个类嵌套到另一个类中是否有意义。
  • 新类型的通用性如何?也许你实际上不是在定义一个新的类型,而是在定义一整套的类型。如果是这样,就不要定义一个新类,而要定义一个新的类模板。

    条款18: 争取使类的接口完整并且最小

    条款19: 分清成员函数,非成员函数和友元函数

    条款20: 避免public接口出现数据成员

    条款21: 尽可能使用const

    条款22: 尽量用“传引用”而不用“传值”

    条款23: 必须返回一个对象时不要试图返回一个引用

    条款24: 在函数重载和设定参数缺省值间慎重选择

    条款25: 避免对指针和数字类型重载

    条款26: 当心潜在的二义性

    条款27: 如果不想使用隐式生成的函数就要显式地禁止它

    条款28: 划分全局名字空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值