C++学习笔记(五)
2015-07-30 15:53
357 查看
41. 复制对象
勿忘其每一个成分,自己编写copying函数,要确保:复制所有local成员变量;调用所有base classes内的适当copying函数。不要尝试以某个copying函数实现另一个copying函数。应该将共同机能放进第三个函数中,并由两个copying函数共同调用。42.返回reference
必须返回对象时,别妄想返回其reference。任何时候看到一个reference声明式,都应该立刻问自己,它的另一个名称是什么,因为它一定是某物的另一个名称。绝不要返回point或reference指向一个local stack对象,或返回reference指向一个heap-allocated对象,或返回pointer或reference指向一个local static对象而有可能同时需要多个这样的对象。
43. private继承
private继承主要用于“当一个意欲成为derived class者想访问一个意欲成为base class者的protected成分,或为了重新定义一或多个virtual函数EBO empty base optimization 空白基类最优化,只适用于单一继承。和复合不同,private继承可以造成empty base最优化。这对致力于“对象尺寸最小化”的程序库开发者而言,可能很重要。44. 明智而审慎的使用多重继承
C++编译器解析重载函数调用的规则:在看到是否有个函数可取用之前,C++首先确认这个函数对此调用的最佳匹配。找出最佳匹配函数后才检验其可取用性。virtual base的初始化责任是由继承体系中的最低层class 负责。这暗示:classes若派生自virtual bases而需要初始化,必须认知其virtual bases——不论那些bases距离多远;当一个新的derived class加入继承体系中,它必须承担起virtual bases(不论直接还是间接)的初始化责任
45. virtual base classes:
非必须;如果必须使用,尽可能避免在其中放置数据。virtual继承会增加大小,速度,初始化(及赋值)复杂度等等成本。如果virtual base classes不带任何数据,将是最具实用价值的情况。多重继承的确有正当用途。其中一个情节涉及"public继承某个Interface class"和"private 继承某个协助实现的class"的两相组合。46. IO类
IO类(istream,ostream)属于不能被拷贝的类,因此只能通过引用来传递他们。47. 构造函数
构造函数不能声明称const的,当创建类的一个const对象时,知道构造函数完成初始化过程,对象才能真正获得其常量属性。因此,构造函数在const对象的构造过程中可以向其写值。只有当类没有声明任何构造函数时,编译器才会自动地生成默认的构造函数。因此,对于一个普通的类来说,必须定义它自己的默认构造函数,而不应该交给编译器。
C++11 提出在狗仔函数的参数列表后写上 =default 以表明要求编译器生成默认构造函数。这条语句既可以和声明出现在一起出现在类的内部,也可以出现在类的外部。
相关文章推荐
- C++学习笔记(四)
- 黑马程序员--C语言-指针函数及应用
- c++中容器之总结篇
- c++之string类编写
- C/C++中volatile关键字详解
- C++学习笔记(三)
- C++学习笔记(二)
- 【effective c++读书笔记】【第2章】构造/析构/赋值运算(1)
- 【effective c++读书笔记】【第2章】构造/析构/赋值运算(1)
- C语言中控制台应用程序中空格的输出。编译环境:vs2010
- c语言实现几种排序算法OC实现
- 【C语言探索之旅】 第二部分第十课:练习题和习作
- 【语言-c++】map的使用
- C++学习笔记(一)
- 读书笔记MoreEffectiveC++(31)
- C语言程序的构成
- 关于C语言中的运算符
- C++OJ提交题目中的语言选项里G++与C++的区别
- c++ 工具库 (zz)
- 约瑟夫环(C++单项循环链表)