设计一个class,应该考虑以下问题: 新type的对象应该怎样创建和销毁? 构造函数 析构函数 内存分配 内存释放 对象的初始化和对象的赋值应该有什么样的差别? 拷贝构造函数 赋值运算符 新对象如果被用值传递,这意味着什么呢? 拷贝构造函数 新对象的合法持有哪些? Setter 错误检查 对象是否会被继承?是否继承自其他类型? 虚函数 析构函数 新类型需要什么样的转换? Operator操作符 Explicit构造函数 什么样的操作符合函数对此新类型是合理的? 成员函数 非成员函数 静态函数…
Class的设计就是type的设计.在定义一个新type之前,请确定你已经考虑过本条款覆盖的所有讨论主题. 新type的对象应该如何被创建和销毁? 对象的初始化和对象的赋值该有什么样的区别? 新type的对象如果被passed by value(以值传递),意味着什么? 什么是新type的“合法值”? 你的新type需要配合某个继承图系(inheritance graph)吗? 你的新type需要什么样的转换? 什么样的操作符和函数对此新type而言是合理的? 什么样的标准函数应该驳回? 谁该取…
设计class 的时候,需要好好考虑下面的问题: 1.新type的对象应该如何被创建和销毁? 2.对象的初始化和对象的赋值该有什么样的差别? 3.新type的对象如果pass by value,意味着什么? 4.什么是新type的合法值? 5.新type需要某个继承体系吗? 6.新type需要什么样的转换? 7.什么样的操作符和函数对新type的对象是合理的? 8.该如何访问新type对象的成员? 9.什么是新type未声明的接口? 10.新type有多么一般化?是否应该使用template?…
问题聚焦:     这一节不涉及代码,但是我们需要明确的一点是,思想比代码要重要得多.     设计优秀的classes是一项艰巨的工作,就像设计好的types一样.     我们应该带着和“语言设计者当初设计语言内置类型时”一样的谨慎来研讨class的设计. 那么,如何设计高效的classes呢? 下面几乎每一个针对class设计的提问,往往就是你所需要遵守的设计规范. 1 新type的对象应该如何被创建和销毁?     这会影响到你的class的构造函数和析构函数以及内存分配函数和释放函数的…
NOTE: 1.Class 的设计就是type的设计.在定义一个新type之前,请确认自己已经考虑过本条款所有主题(具体参考effective c++).…
1,新的type对象应该如何被创建和销毁? 这会影响class的构造函数ctor和析构函数dtor,以及内存分配函数和释放函数   //operator new //operator new[] //operator delete //operator delete[] 2,对象的初始化和对象的赋值该有什么什么区别? 初始化在于构造函数ctor 对象的赋值在于assigment操作符//operator = 3,新type的对象如果被passed by value意味着什么? 意味着产生一个co…
前言 我们在编写程序的时候,无论哪一种语言,总是会告诉你这种语言应该有的类型.我们将它们直接拿来使用,可是从来没有考虑过这些类到底是怎么设计出来的! 所幸的是:在OOP中,每当我们定义一个新的class,也就相当于定义了一个新type. 那么,一个好的type是怎样设计出来的呢?我们需要考虑哪些事情呢? 1,新type的对象应该如何创建和销毁? 包括构造和析构函数,内存分配和释放函数(operator new, operator delete,operator new[], operator d…
EC笔记:第4部分:22.所有成员都应该是private的 更简单的访问 用户不用记得什么时候该带上括号,什么时候不用带上括号(因为很确定的就要带上括号) 访问限制 对于public的成员变量,我们可以随意对其设置值(无论合法还是非法,它都会无条件接受) 但是我们如果将其设置为private的,那么就可以只向外暴露接口,我们不仅可以通过这些接口控制成员的访问权限(读写.只读.只写.禁止访问),而且还可以对传入的值做校验,指定哪些值可以设置,哪些不可以. 更易维护 我们将成员设置为public,假…
EC笔记:第二部分:12.复制对象时勿忘其每一个成分 1.场景 某些时候,我们不想使用编译器提供的默认拷贝函数(包括拷贝构造函数和赋值运算符),考虑以下类定义: 代码1: class Point{ private: double x; double y; public:         Point()=default; Point(const Point &other){ x=other.x; y=other.y; } const Point& operator=(const Point…
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.html 前言 这篇博客主要记录了Andrew Ng课程第6章机器学习系统的设计,Andrew用他的丰富经验讲述了如何有效.耗时少地实现一个机器学习系统,内容包括误差分析,误差度量,查准率和查全率等等 I 首先要做什么 以一个垃圾邮件分类器算法为例,为了解决这样一个问题,我们首先要做的决定是如何选择并…