美文网首页我爱编程
C++ 创建类时常考虑的问题

C++ 创建类时常考虑的问题

作者: 10d3642f94b1 | 来源:发表于2018-05-28 21:20 被阅读0次
C++ 创建类时常考虑的问题

本文仅以c++为例,简要说明创建一个类时我们需要考虑的问题。创建一个新类实际上就是定义一 个新的数据类型,因此设计类需要当做类型设计来对待的,c++的设计者在设计语言的内置类型时是经过深思熟虑的,当然我们新设计类时也需要这样来对待,那么我们具体会思考什么样的问题呢?

继承

  • 将这个类添加到现有继承层次结构中是否合适?
  • 应该使用公有继承还是私有继承?
  • 应该支持多继承吗?这样会影响哪些成员函数设置为虚函数。

组合

  • 相对于直接使用继承,将一个关联的对象作用数据成员是否更合适?

抽象接口

  • 打算将该类设计为抽象基类以使子类重写各个虚成员函数吗?

标准设计模式

  • 能否在类的设计中使用众所周知的设计模式?
  • 使用设计模式能够从前人深思熟虑的、精妙的设计方法学中获益,也使设计更容易被其他工程师使用。

初始化与析构模型

  • 对象的创建于删除是否让客户通过 newdelete 实现,还是用工厂方法管理?
  • 是否要为知己的类重载 newdelete 定制内存分配行为?
  • 是否需要使用智能指针?

定义复制构造函数和赋值操作

  • 如果这个类中分配了动态内存,那么这两个都是需要定义的(当然,析构函数也需要定义)这会影响对象的复制和安值传递等行为。

模板

  • 设计的类是定义了一族类型还是一种类型?如果是一族类型的话,则可以考虑使用模板是设计一般化。

const和explicit

  • 尽可能将参数、返回值和方法定义为 const
  • 对于单参数构造函数使用 explicit 关键字以避免意外的类型转换。

操作符

  • 定义类需要的操作符,如 +、*=、[]、==或<< 等。

类型转换操作符

  • 考虑是否希望设计的类自动转换为其他类型并声明适当的转换操作符。

友元

  • 友元会破坏类的封装,友元的出现往往是设计变坏的征兆。不到万不得已不要使用。

非功能性约束

  • 如性能和内存使用情况这类的问题也会约束类的设计

相关文章

  • C++ 创建类时常考虑的问题

    本文仅以c++为例,简要说明创建一个类时我们需要考虑的问题。创建一个新类实际上就是定义一 个新的数据类型,因此设计...

  • C++ 类创建实例时出错的处理

    C++ 类创建实例时出错的处理 C++类创建实例时都做了些什么 创建实例new操作做两件事: 分配内存 初始化成员...

  • 05 - Extending the Pickup Class

    创建新的C++类 BatteryPickUp继承自PickUp类 给他添加物理效果 创建该类的蓝图类 拖拽到场景中...

  • 创建Screen类(《C++程序设计》作业)

    本题来自中国mooc《C++程序设计(面向对象进阶)》课程作业。 1.考虑创建一个绘图程序。需要有一个类Scree...

  • OC与C++ 混编的文件交互

    用xcode 创建C++的文件 后得到 一个.cpp文件和.hpp文件!.hpp文件 做c++ 类的申明 类的...

  • 2019-02-23 N皇后算法

    C++实现N皇后问题 程序中一开始通过设置sizeOfBoard规定方形棋盘的大小 程序使用了vector类创建了...

  • 2.C++友元

    C++ 控制类对象私有部分的访问,但有时候需要在类的外部访问类的私有成员,这种情况下C++ 提供了友元的机制 创建...

  • 03 - Making Your First Pickup Cl

    点击File/New C++ class 创建新的c++类 继承自Actor 命名为PickUp 添加私有变量Pi...

  • 06 - Creating the Spawning Volum

    生成用来创建电池的volume 添加新的C++ actor类 SpawnVolume 为Actor类添加一个UBo...

  • C++创建类对象方法和动态对象数组

    最近在学C++,在内存管理这里遇到几个点,记录一下加深记忆。 创建类对象的方法 C++中有两种创建对象的方法,一种...

网友评论

    本文标题:C++ 创建类时常考虑的问题

    本文链接:https://www.haomeiwen.com/subject/qooqjftx.html