一、overload override overwrite
1、overload 重载
相同的范围
函数名相同
参数不同,返回值不在检测之列
virtual可有可无
2、override 重写()
派生类与子类
函数名相同
参数相同,返回值也相同
必须要有virtual,即通过虚函数实现
3、overwrite
派生类中的函数覆盖了基类中的函数
派生类与子类
函数名相同
参数相同
二、虚基类
解决多个父类问题。
三、多态
程序经过编译、链接、执行。
静态联编:运行前完成联编要求程序在编译就知道调用函数的全部信息,效率高。
动态联编:运行时确定调用函数的全部信息,灵活、易于维护。
静态联编支持的多态称为编译时多态,也称为静态多态。主要通过函数重载(包括运算符重载)和模板实现。
动态联编支持的多态称为运行时多态,也称为动态多态。主要通过虚函数实现。
四、C++中内存分成5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区
http://blog.csdn.net/i_better/article/details/51861181
栈:由编译器在需要的时候分配,不需要的时候自动清除的变量的存储区,通常是局部变量、函数参数等。
堆:通过new分配的内存块,编译器不会管,由程序控制,new delete,如果没有通过程序释放,程序结束后,操作系统释放。
全局/静态存储区:全局变量和静态变量。
常量存储区:存放常量,不允许修改。
自由存储区:由malloc等分配的内存,和堆相似,由free释放。
函数代码放在代码区。
五、const
1、
//指向常量的指针
//指针指向的对象不可以改变,但指针本身的值可以改变char *ptr1="1234";
char *ptr2="5678";
const char *ptr=ptr1;//"01234";
ptr=ptr2;
//ptr[1]='1';//非法
ptr1[0]='9';
cout<<*ptr<<endl;
2、
//常指针//指针本身的值不可改变,但其指向的对象可以改变。
char* const ptr3="678";
ptr3[0]='9';
//ptr3=ptr1; //非法
cout<<*ptr3<<endl;
3、
//指向常量的常指针
const char* const ptr4="0987";
//ptr4[0]='1';//非法
//ptr4=ptr3; //非法
cout<<*ptr4<<endl;
4、
//定义常量
const int pai=3.1415926;
5、
//常引用
//对常量(const)的引用,不能修改其绑定的对象。