类和结构体的选择
2015-12-15 22:07
190 查看
结构体实例总是通过值传递,类实例总是通过引用传递。这意味两者适用不同的任务。当你的在考虑一个工程项目的数据构造和功能的时候,你需要决定每个数据构造是定义成类还是结构体。
按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:
结构体的主要目的是用来封装少量相关简单数据值。
有理由预计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
任何在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
结构体不需要去继承另一个已存在类型的属性或者行为。
合适的结构体候选者包括:
几何形状的大小,封装一个
一定范围内的路径,封装一个
三维坐标系内一点,封装
在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体。
按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:
结构体的主要目的是用来封装少量相关简单数据值。
有理由预计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
任何在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
结构体不需要去继承另一个已存在类型的属性或者行为。
合适的结构体候选者包括:
几何形状的大小,封装一个
width属性和
height属性,两者均为
Double类型。
一定范围内的路径,封装一个
start属性和
length属性,两者均为
Int类型。
三维坐标系内一点,封装
x,
y和
z属性,三者均为
Double类型。
在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体。
相关文章推荐
- VS运行时库 /MD、/MDd 和 /MT、/MTd之间的区别
- opengl函数笔记
- OC中new方法与alloc+init及构造方法
- 稀疏表示字典的显示(MATLAB实现代码)
- 比JDK高效的array equals
- 2015
- 使用Spring框架实现文件上传
- 垃圾回收机制
- OC 中关键字的作用域
- 操作系统页面置换fifo lru方式
- Android WebView总结
- 算法基础训练题(一)
- history
- 产生渐变色的view
- Scala List一阶函数操作
- matlab----标签图像分类训练工具
- matlab----标签图像分类训练工具
- ubuntu上如何安装以tar.gz为后缀名的软件安装包,以install_flash_player_11_linux.i386.tar.gz为例
- zzulioj 1778: 和尚特烦恼4——有多少战斗力 (最小公倍数)
- 03 javadoc