C++主要特点:编译型语言,强类型(并非类型安全),操作符重载,泛型(STL库容器)。
匿名联合:主要体现成员变量在内存中分布的方式,外界无法调用无名的对象。
bool:任何基本类型都能隐式转为布尔类型。
函数重载:
原理:g++编译器换名机制,形参表不同则换名后函数名不同。
extern C:按照C语言的方式编译,无法换名,无法函数重载。
编译器匹配函数的原则:
缺省参数:声明指定,定义不要指定;某一个参数有缺省值,后面的参数都需要;避免缺省参数产生重载歧义。
inline函数:编译后用二进制代码替换函数调用。减少调用时间的开销(各种保存现场,出栈入栈)。C++内联函数优于C语言的有参宏(宏函数)。
动态内存分配:
malloc/free与new/delete:前者继续可用,后者分配同时初始化(例如类的初始化表、引用等)。
数组方式分配: 类型 *p = new 类型 [] {}
释放: delete [] p; p = NULL;(防止双重释放报错)
引用:
内存的别名(alias),对引用操作即对目标内存操作;不占内存,并非实体(从C++看,从汇编来看是指针);
必须初始化,不能换目标;常属性要求一致,可以更加严格,int a; const int &ra= a;
常引用(万能引用)延长临时变量的生命期。
引用形参以及常引用形参:
避免复制对象产生开销;
常引用形参:防止修改实参;接受常类型实参,foo(a,10);
引用型返回值:不能返回局部变量的引用。
类型转换: