c++ 总结

来源:互联网 发布:keep软件注册昵称格式 编辑:程序博客网 时间:2024/06/05 19:36

一、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)的引用,不能修改其绑定的对象。



原创粉丝点击