C++高级编程笔记

1.头文件添加注释(文件名,作者,函数简介,日期).
2.当头文件数目较多时,应将头文件放在include目录下,源文件放在source目录下.
3.const常量有数据类型,而宏常量没有数据类型.
4.对于重载赋值运算符,应该用"引用传递"方式
5.函数入口处用assert检查
6.内存分配方式有三种,从静态存储区域分配,从栈上分配,从堆上分配,静态存储区包括全局变量,static变量等.
7.C++/C语言没有办法知道指针所指的内存容量.
8.指针消亡了,并不表示它所指的内存会被自动释放.内存被释放了,并不表示指针会消亡或者成了NULL指针.
9.指针被free或delete之后,别忘记设置为NULL.
10.malloc不调用构造函数,而new自动调用构造函数,free和delete类似.
11.为什么要用重载?(1)便于记忆.(2)不得不,比如说类的多个构造函数

12.不能编译头文件
全局变量定义时,(直接赋值),extern无作用
全局变量声明时,extern告诉编译器,定义部分在其它模块中
全局变量默认extern

13.重载:同一个类中,或都是全局函数.
覆盖:分别位于派生类与基类中,函数名与参数都相同且有virtual关键字.用于多态.
隐藏:分别位于派生类与基类中,只要同名,且非覆盖,均为隐藏.

14.函数参数的缺省值只能出现在函数的声明中.

15.操作符重载。调用时,普通函数参数出现在圆括号内,而对于运算符,其参数出现在其左右两侧。定义时,可定义为全局函数和类的成员函数,后者比前者少了一个参数。

16.类的构造次序,先构造基类,再构造构造函数的参数,再构造成员,再构造自己。析构则完全相反。

17.String a("hello");String b=a;其实是调用了b的拷贝构造函数,最好写成String b(a).

18.对于一个类,编译器默认生成4个函数,无参构造函数,拷贝构造函数,析构函数,赋值函数

19.类的析构函数应为虚函数,多态

20.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const 引用传递”,目的是提高效率。例如将void Func(A a)改为 void Func(const A &a)。

21.引用被创建的同时必须被初始化,一旦引用被初始化,就不能改变引用的关系。

22.对比于C语言的函数,C++增加了重载,内联,const和virtual四种新机制,重载和内联机制既可以用于全局函数也可用于类的成员函数,const与virtual机制仅用于类的成员函数

23.赋值符号的重载不能为友元,只能是类的成员函数

posted @ 2013-02-14 21:26  sumaoqing123  阅读(399)  评论(0编辑  收藏  举报