EC笔记:第4部分:19、设计class犹如设计type
设计一个class,应该考虑以下问题:
- 新type的对象应该怎样创建和销毁?
- 构造函数
- 析构函数
- 内存分配
- 内存释放
- 对象的初始化和对象的赋值应该有什么样的差别?
- 拷贝构造函数
- 赋值运算符
- 新对象如果被用值传递,这意味着什么呢?
- 拷贝构造函数
- 新对象的合法持有哪些?
- Setter
- 错误检查
- 对象是否会被继承?是否继承自其他类型?
- 虚函数
- 析构函数
- 新类型需要什么样的转换?
- Operator操作符
- Explicit构造函数
- 什么样的操作符合函数对此新类型是合理的?
- 成员函数
- 非成员函数
- 静态函数
- 什么样的标准函数应该驳回?
- Private
- 谁该是用新的类型?
- 友元函数
- Protected函数/成员
- 未声明接口?
- 多线程
- 异常安全性
- 效率
- 是否一般化?
- 模板类
- 确实需要一个新的type吗?
- 是否有其他路径可以得到相同的结果?
EC笔记:第4部分:19、设计class犹如设计type的更多相关文章
- Effective C++ -----条款19:设计class犹如设计type
Class的设计就是type的设计.在定义一个新type之前,请确定你已经考虑过本条款覆盖的所有讨论主题. 新type的对象应该如何被创建和销毁? 对象的初始化和对象的赋值该有什么样的区别? 新typ ...
- 【19】设计class犹如设计type
设计class 的时候,需要好好考虑下面的问题: 1.新type的对象应该如何被创建和销毁? 2.对象的初始化和对象的赋值该有什么样的差别? 3.新type的对象如果pass by value,意味着 ...
- Effective C++(19) 设计class犹如设计type
问题聚焦: 这一节不涉及代码,但是我们需要明确的一点是,思想比代码要重要得多. 设计优秀的classes是一项艰巨的工作,就像设计好的types一样. 我们应该带着和“语言设计 ...
- 条款19:设计class犹如设计TYPE(Treat class design as type design)
NOTE: 1.Class 的设计就是type的设计.在定义一个新type之前,请确认自己已经考虑过本条款所有主题(具体参考effective c++).
- 条款19:设计class犹如设计type
1,新的type对象应该如何被创建和销毁? 这会影响class的构造函数ctor和析构函数dtor,以及内存分配函数和释放函数 //operator new //operator new[] // ...
- [Effective C++ --019]设计class犹如设计type
前言 我们在编写程序的时候,无论哪一种语言,总是会告诉你这种语言应该有的类型.我们将它们直接拿来使用,可是从来没有考虑过这些类到底是怎么设计出来的! 所幸的是:在OOP中,每当我们定义一个新的clas ...
- EC笔记:第4部分:22、所有成员都应该是private的
EC笔记:第4部分:22.所有成员都应该是private的 更简单的访问 用户不用记得什么时候该带上括号,什么时候不用带上括号(因为很确定的就要带上括号) 访问限制 对于public的成员变量,我们可 ...
- EC笔记:第二部分:12、复制对象时勿忘其每一个成分
EC笔记:第二部分:12.复制对象时勿忘其每一个成分 1.场景 某些时候,我们不想使用编译器提供的默认拷贝函数(包括拷贝构造函数和赋值运算符),考虑以下类定义: 代码1: class Point{ p ...
- Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...
随机推荐
- BPM生产安全管理解决方案分享
一.方案概述生产安全管理是企业生产管理的重要组成部分,组织实施好企业安全管理规划.指导.检查和决策,保证生产处于最佳安全状态是安全管理的重要内容和职责.H3 BPM企业生产安全管理解决方案是一套专门为 ...
- Linux基础介绍【第一篇】
Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...
- Unity插件之plyGame教程:DiaQ对话系统
本文为孤月蓝风编写,转载请注明出处:http://fengyu.name/?cat=game&id=296 DiaQ是plyGame旗下的一款对话及任务系统.拥有可视化的对话及任务编辑器,能够 ...
- 理解JavaScript中的“this”
对于javascript的初学者来说,一般对“this”关键字都感到非常迷惑.本文的目的旨在让你全面的了解“this”,理解在每一个情景下如何使用“this”,希望通过本文,可以帮助同学们不在害怕“t ...
- Openfire阶段实践总结
从3月开始研究Openfire,其实就是要做一套IM系统,也正是这个原因才了解到Openfire.之前还真没想过有这么多的开源产品可以做IM,而且也没想到XMPP这个协议竟然如何强大.看来还是标准为先 ...
- 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家
系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...
- 【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析
目录 说明 使用Fiddler分析android版API 部分效果图 关于源码 说明 在做博客园UWP版的时候其实就有做知乎日报的打算了,前段时间一直出差,在酒店里用Fiddler简单的分析了一下An ...
- useful Ansible commands
This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...
- Tomcat服务无法启动的问题
去年下半年公司就决定投入人力物力"跟风"做大数据方向的研究并应用到后续项目中,于是乎,我们也得熟悉下Java才行了. 先弄个JavaEE的开发环境再说吧.装JDK.JRE,其实JD ...
- CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL
CSharpGL(34)以从零编写一个KleinBottle渲染器为例学习如何使用CSharpGL +BIT祝威+悄悄在此留下版了个权的信息说: 开始 本文用step by step的方式,讲述如何使 ...