effective c++笔记

effective c++笔记

ID:15218078

大小:250.50 KB

页数:16页

时间:2018-08-02

effective c++笔记_第1页
effective c++笔记_第2页
effective c++笔记_第3页
effective c++笔记_第4页
effective c++笔记_第5页
资源描述:

《effective c++笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1)default构造函数要不没有参数,要不每个参数都有缺省的值例子:classA{public:A();//default构造函数};classB{public:explicitB(intx=0,boolb=true);//defualt构造函数,同时禁止隐式初始化};classC{explicitC(intx);//不是default构造函数}----------------------------------------------------------------------------

2、----------------------------------------------voiddoSomething(Bobject);doSometing(28);//错误,这里不会隐式的自动转化doSomething(B(28));//正确,显式的进行转化,同时函数的第二个参数为缺省值trueNOTE:构造函数前加上关键字explicit表示阻止该构造函数用来执行隐式类型的初始化(implicittypeconversions),但是它们仍可被用来进行显示类型转化(explicittyp

3、econversions).2)copy构造函数copy构造函数:以同类型对象初始化自我对象copyassignment操作符:从另一个同类型的对象中拷贝其值到自我对象例子:classWidget{public:Widget();//default构造函数Widget(constWidget&rhs);//拷贝构造函数Widget&operator=(constWidget&rhs);//copyassignment操作符(=)};Widgetw1;//新对象被定义Widgetw2(w1);W1=

4、w2;//调用copyassignmentWidgetw3=w2;//调用copy构造函数NOTE1:如果一个新对象被定义,则一定会有个构造函数被调用(缺省的或是拷贝构造函数或者是带参的构造函数)NOTE2:byvalue(传值)的时候也会调用拷贝构造函数(函数的参数或是返回值)BoolhasAcceptable(Widgetw);…..WidgetaWidget;If(hasAcceptable(aWidget))…//一般情况以Pass-by-reference-to-const传递用户自定义

5、类型3)函数对象(functionobjects)“行为像函数”的对象,这样的对象来自于重载operator()的classes1)命名习惯例子:Rationala,b;a*b;a)non-memberoperator*函数的声明:constRationaloperator*(constRational&lhs,constRational&rhs);note:lhs->lefthandsiderhs->righthandsideb)成员函数声明:左侧的实参由指针this表现出来了constRati

6、onaloperator*(constRational&rhs);条款一:面向对象形式:构造函数,析构函数,封装,继承,多态,virtual函数,动态绑定),泛型形式(generic),元编程形式(metaprogramming),templateC++STL:容器,迭代器,算法,函数对象异常,重载条款二:define可以使用const,enum,inline替代1)Class的专属常量例子:.h文件-------------------------------------------------

7、--------------------------classGamePlayer{private:staticconstintNumTurns=5;//class的专属常量enum{NumTurns=5};//theenumhackstaticconstdoubleNumTurns2;//staticclass常量声明intscores[NumTurns];}.c文件-----------------------------------------------------------------

8、----------constintGamePlayer::NumTurns;//定义,只有想取class专属常量地址时才需要这个定义constdoubleGamePlayer::NumTurns2=3.12;//staticclass常量定义2)#define并不重视作用域(scope),一旦宏被定义,它就在其后的整个编译过程中有效,除非在某处被#undef.3)以a和b中较大的值调用f#defineCALL_WITH_MAX(a,b)f((a)>(b)?(a):(b))//存在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。