学习一定要定期总结,只有总结才知道学了什么,学到了什么,还有什么要学,这是规划。
近两周的程序打得少了一些,看的多了一些,《高质量编程》第八章,《使用UNIX编程》大概看了一百页,发现还真是不错,可读性很强,比apue强多了,也不能太最求经典,至少入门的时候还是要找个自己适合的书看。还有c trap and pitfalls,今天刚看了30页,也是一本好书,我这周要把它看完一遍。要看的还真多,林瑞的好好好看完,unix好好练一下awk,sed,grep等等,还有一定要把IPC这块弄明白。这是近期的工作。
ok,总结一下第八章和第九章。
1. 隐式类型转换会是重载函数产生二义性。
2. 成员函数重载的条件:相同的范围,相同的函数名,不同的参数表,virtual无关。
覆盖的特性:覆盖是派生类覆盖基类;范围不同,函数名相同,参数表相同,基类函数必须virtual。
派生类函数隐藏基类函数的条件:函数同名,但参数不同,virtual无关,基类函数被隐藏。
函数同名,参数相同,基类无virtual,基类函数被隐藏。
3. 运算符重载:
|
运算符
|
规则
|
|
所有的一元运算符
|
建议重载为成员函数
|
|
= () [] ->
|
只能重载为成员函数
|
|
+= -= /= *= &= |= ~= %= >>= <<=
|
建议重载为成员函数
|
|
所有其它运算符
|
建议重载为全局函数
|
4. inline是一种“用于实现的关键字”,而不是“用于声明的关键字”。
第九章:
5. 缺省的“拷贝构造函数”和“赋值函数”均采用“位拷贝”,而非“值拷贝”,如果类中含有指针必将出错。
6. 初始化表。派生类一定要在初始化表中调用基类的cf,const变量只能在il中初始化,变量在il中效率更高
(非内部数据类型)。
7. 拷贝cf和赋值cf的区别:赋值就是重载=,还有赋值是针对已存在的对象,拷贝是初始化时用的,注意,拷贝cf也可使用=,但是建议使用()。