`
isiqi
  • 浏览: 16746664 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Item 19 类的设计

 
阅读更多

设计一个类,要考虑如下几方面:

1> 如何创建、销毁?这会影响:ctor, dtor, operator new, operator delete
2> 初始化和赋值有什么差别?
3> 传值的时候要做什么?会影响copy ctor
4> 合法值都有哪些?会影响ctor、赋值、setter、异常。
5> 是否继承自某个类体系?如果是,要遵循其定义规范。
6> 需要什么样的类型转换?是隐式的还是显示的?
7> 操作符
8> 编译器生成的函数是否有不需要的
9> 谁可以访问其成员
10> 如果在性能、异常安全、资源管理上有需求,是否该提供一些接口呢?
11> 是否需要模板类
12> 如果只是想通过派生来增加功能,也许用定义几个模板或函数会更好

分享到:
评论

相关推荐

    Article 2 Paragraph 1 of Item 19-3 W52,W53,W56 from July 11 2019.pdf

    这份文件涉及的是WiFi产品在日本进行TELEC认证的技术...在进行产品设计和生产之前,这些标准应当作为关键参考。由于文档内容的不完整性和扫描识别的错误,某些部分可能需要根据上下文和专业经验进一步理解其准确含义。

    2.4 GHz Item 19 of Article 2-1

    其中,第2-1条第19项详细规定了这种宽频带低功率数据通信系统的各项技术参数。 首先,通信频率范围被限定在2,400到2,483.5 MHz之间,涵盖了2.4 GHz ISM(工业、科学和医疗)频段。通信方式可以是单向通信、简单单工...

    用pytorch搭建VGG16、VGG19卷积神经网络对cifar10数据集进行训练(注释源码,免费下载,仅供参考)

    这种设计可以捕获更复杂的特征,但会导致计算量较大。 下面是一个简单的VGG16模型实现: ```python class VGG(nn.Module): def __init__(self, num_classes=10): super(VGG, self).__init__() self.features = ...

    ERP5.0工资系统设计文档

    5.2.21 报表字段(PM_ReportItem) 16 5.2.22 公式表(PM_Formula) 16 5.2.23 视图(PM_V_AveWage) 17 6 接口设计 17 6.1 外部接口 17 6.2 内部接口 17 7 系统模块详细设计 17 7.1 文件(文件这一支在功能树上已删除,...

    百战商城项目Spring Cloud最新架构(9.50G)

    01百战商城项目介绍.avi ...19在common_item服务中实现查询商品规格参数模板.avi 20在backend_item服务中实现查询商品规格参数模板.avi 21在backend_item服务中实现图片上传.avi 22在common_item服务中实现添加商品.a

    api19以上状态栏颜色设置style

    在API 19之后,通过使用Translucent Decor功能,开发者可以控制状态栏的透明度和颜色,使应用界面可以延伸到状态栏下方,创造出更为连贯的设计。 设置状态栏颜色通常有两种方法:一种是使用Java代码,另一种是在XML...

    Catia基础教程-装配设计

    - **活动项(Active item)**:当前正在编辑或操作的对象。 #### 三、装配设计步骤 1. **创建新装配**:首先启动CATIA V5软件,在主界面上选择“New Document”来创建一个新的装配文档。 2. **添加零件**:通过...

    effective c++ word版

    在设计和声明类及函数方面,Meyers提倡“努力使类接口完整且最小化”(Item 18),这样可以提高API的清晰度和可维护性。区分成员函数、非成员函数和友元函数(Item 19),有助于维持封装和职责分离。他还建议避免...

    19在菜单中加入广播按钮.rar_在菜单中加

    综上所述,"19在菜单中加入广播按钮"这个主题涵盖了软件界面设计、用户交互、广播机制以及编程实践等多个方面。通过学习和实践,开发者可以提升其应用的用户体验和功能完整性。而提供的压缩包资源可能包含了具体的...

    19Android-16-baseAdapter.rar

    7. **ViewHolder模式**:为了优化性能,开发者通常使用ViewHolder设计模式。ViewHolder持有ListView项视图的引用,避免了频繁的findViewById()操作,提高了性能和流畅度。 8. **适配器与数据源的更新**:当数据源...

    Effective C++英文word版

    在类和函数的设计与声明方面,Item 18强调追求完整且最小化的类接口,以提供清晰的API。Item 19区分了成员函数、非成员函数和友元函数的使用场景。Item 20告诫避免在公有接口中使用数据成员,以保护数据安全。Item ...

    More Effective C++.pdf

    2. **将非尾端类设计为抽象类(Item 33)** - 抽象类是指包含至少一个纯虚函数的类。 - 将非尾端类(即不打算实例化的类)设计为抽象类,可以防止误用,并鼓励正确的继承和多态使用。 3. **如何在同一程序中混合...

    DesignPatternsForQT( C++ 设计模式 )

    QT的`QStateMachine`和`QState`类支持状态机的设计,实现状态模式。 21. **策略模式(Strategy)**:定义一系列算法,并将每一个算法封装起来,使它们可以互相替换。QT的绘图API如`QPainter`允许选择不同的绘制策略...

    设计模式.rar

    19. **状态模式** (State): 允许对象在其内部状态改变时改变其行为,对象看起来似乎修改了它的类。例如,QPushButton的Enabled、Disabled状态。 20. **策略模式** (Strategy): 定义一系列算法,并将每一个算法封装...

    CListCtrl类的成员

    #### 19. GetSubItemRect & GetHotItem & SetHotItem & GetSelectionMark & SetSelectionMark 这些函数用于处理列表中的子项区域、热项(鼠标悬停项)和选择标记,对于响应用户的交互非常关键。 #### 20. ...

    Effective_C++

    - **Item19**: 区分成员函数、非成员函数和友元函数的作用和使用场景,合理安排它们在类中的位置。 - **Item20**: 尽量避免在公共接口中使用数据成员,保护类的内部状态,减少对外部的依赖。 - **Item21**: 尽可能...

Global site tag (gtag.js) - Google Analytics