您的位置:首页 > 编程语言 > C语言/C++

c++ 总结

2017-08-02 10:29 155 查看
一、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)的引用,不能修改其绑定的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++