1. 多态与重载
多态基于类的虚函数,子类重新定义父类的虚方法,相同的函数名有不同的函数体,程序运行中动态绑定调用地址;
重载基于同名的函数,编译器依据同名函数的参数不同来区别函数,程序编译期静态绑定调用地址;
2.字符串与字符
“s"占2个字节,系统自动添加”\0“;
's'占一个字节;
3.符号常量
#define a 3.12 与其他预编译指令一样不加分号,此外,其不显示指定类型;
const double a=3.12;
常量其值不改变,必须设置初始值;
4.类型转换
系统内部的隐式转换向高字节方向转换,(short,char->int)->unsigned->long->(double<-float);
人为强制转换类型,如:double(a) , (double)a;
c++编译器自动检查类型不一致问题;
5.不变性
在类型转换里面,变量被借用参与运算,但其自身类型不变;
在位运算里面,参与移位运算的变量值不变;
6.inline
编译器进行内联函数替换之前必须知道函数体,之前只有函数申明为无效;
只有带switch 或循环的函数不能说明为内联函数;
函数内联在定义时加inline即可;
7.形参值
在函数的定义与申明处,形参值最多出现一次;
所有带值的形参必须出现在无值形参的右边;
调用函数如果使用了形参值,形参值必须出现在调用之前;
8.数组
do while()后面加分号
在数组a[5]中,a+i代表首地址偏移i个存储单元,而非字节
二维数组按行存储,按行赋值,行大小可以省略;
数组涉及到赋值,没有赋值的为0或者‘\0’;
9.字符串
strcpy(stra,strb)可以理解为strb用‘\0’补齐成stra的长度,然后strb全部给stra;
stra,strb内存大小不会变;
10.共用体与结构体
相同点:2者都可以以整体的形式取地址,sizeof计算整体内存,同型整体相互赋值;
不同点:共用体所有成员共用一个地址,采用覆盖技术,只能够初始化第一个成员;