《Effective C++》阅读笔记

《Effective C++》阅读笔记

ID:40584158

大小:56.00 KB

页数:6页

时间:2019-08-04

《Effective C++》阅读笔记_第1页
《Effective C++》阅读笔记_第2页
《Effective C++》阅读笔记_第3页
《Effective C++》阅读笔记_第4页
《Effective C++》阅读笔记_第5页
资源描述:

《《Effective C++》阅读笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《EffectiveC++》阅读笔记第一章:让自己习惯C++1、视C++为一个语言联邦a、C++由四个部分组成:C、Object-OrientedC++、TemplateC++、STL。b、每一个部分有自己独立的高效编程守则2、用const、enum、inline代替#definea、#define是预处理器处理的部分,当编译出错时,不容易发现错误发生在哪里,其次由于预处理器盲目的替换,会导致目标码的增大b、定义常量指针时采用如下两种方法:constchar*constptr=”helloworld“

2、、conststd::stringptr(”helloworld“)c、#define并不重视作用域,所以无法定义class中常量变量d、对于类中常量,某些编译器不允许声明时进行初值设定,而类其他成员依赖这个常量,可以采用enum来实现e、用inline来代替形似函数的宏3、尽可能的使用consta、char*constptr、constchar*ptr、charconst*ptr、和constchar*constptr的含义b、const成员函数的作用:使接口容易被理解、消除误操作的隐患、使操作co

3、nst对象成为可能c、两个成员函数如果只有常量性不同,可以被重载。d、当const与non-const发生重复时,可以使用non-const版本调用const(使用const_cast和static_cast)4、确定对象使用前已经初始化a、为内置型对象进行手工初始化,因为C++不保证初始化它们;b、构造函数最好使用成员初值列,而不是在构造函数本体内进行复制操作,初值列列出的成员变量,其排列顺序应该跟声明相同c、以localstatic对象代替non-localstatic对象;第二章:构造/析构/赋

4、值运算5、了解C++默默地编写了并调用哪些函数a、default构造函数,复制构造函数,赋值操作符,析构函数;b、如果是一个独立的类,上面的函数默认为public,如果是一个派生类,上面的函数与基类保持一致c、如果类里面有引用变量,则default构造函数,赋值操作符都无效;6、若不想编译器自动生成函数,就应该明确的拒绝a、因为默认的上述四个函数都是public,我们可以只显示的声明他们,而不去实现他们,并且将它们定义为private;不实现他们是因为成员函数和友元函数可以访问private;如果不实

5、现他们,而在成员函数或友元函数调用它的时候,就会提示连接错误b、还有一种方式就是定义一个上述这样的基类,然后不干其他的事,如果你需要其他的类来拒绝默认函数,就直接继承这个基类就可以了7、为多态基类声明虚析构函数a、我们知道,虚函数的作用主要体现在当用表面上是基类指针,实际上市指向派生类对象进行操作的时候,在这种情况下,当我们销毁对象时,如果不是虚函数,就会造成基类部分被释放,派生类部分不被释放的局部销毁情况。b、带有多态性质的基类应该声明虚析构函数;如果一个类中有一个以上的虚函数,则应该声明虚析构函数

6、。c、类不是作为基类用,或不具备多态性,就不应该声明虚析构函数。8、别让异常逃离析构函数a、析构函数绝对不要吐出异常,如果一个析构函数调用的函数可能会抛出异常,那么析构函数应该吞掉它们(不传播)或是结束程序b、如果客服需要对某个操作函数运行期间可能抛出的异常做反应,那么class应该提供一个普通的成员函数(而不是在析构函数中)执行该操作。9、绝不在构造和析构函数中调用虚函数a、简单的理解就是基类的构造函数在调用时派生类还没有创建,所以试图实现这种多态是不可能的,对于析构函数一样,因为派生类对象已经销毁

7、。10、令operator=返回一个reference*thisa、与内置内型和标准库共同遵守11、在operator=中处理自我赋值a、确保对象在进行自我赋值时operator=有良好的行为,具体的方法有比较来源和目标的地址,正确的语句顺序、copy-and-swapb、确定一个函数在操作多个对象是,而多个对象实际上是同一个对象,其行为仍然正确。12、复制对象时勿忘复制每一个成分a、编译器会提供默认的copy构造函数和copyassignment操作符。如果我们认为默认的copy函数无法满足我们要求

8、时,我们必须重写这两个函数,在重写这两个函数时,对于对象里面每个成分都要显示的进行复制b、在有继承关系的类中,对于自己写的赋值构造函数,如果在派生类构造函数中只对派生类成员进行了复制的话,会导致部分复制的错误,因为这个时候派生来不会调用基类的复制构造函数进行构造,而是会调用无参数的构造函数进行构造,这样基类的成员就没有复制下来,所以在派生类中要显示的加上基类的复制构造函数。c、不要尝试一个copying函数调用另一个copying函数,因为我们无法知道在

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

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

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