部分总结
来源:互联网 发布:angular js 跨域访问 编辑:程序博客网 时间:2024/05/01 11:00
重载是指同一个类中函数名相同参数不同(virtual可有可无)的情况
覆盖是指基类和派生类中函数名参数相同,基类函数必须有virtual关键字的情况
隐藏是指基类和派生类之间有以下2中情况(1,函数名相同参数不同virtual可有可无 || 2,函数名参数相同,基类函数无virtual关键字)
(覆盖: 基类virtual函数,派生类有同名相同参数函数时会覆盖基类原函数,即使派生类转成基类指针也访问不到基类原函数,访问的一定是派生类的函数
而藏的情况只要把指针转成基类的指针就可以访问到基类的函数)
覆盖是指基类和派生类中函数名参数相同,基类函数必须有virtual关键字的情况
隐藏是指基类和派生类之间有以下2中情况(1,函数名相同参数不同virtual可有可无 || 2,函数名参数相同,基类函数无virtual关键字)
(覆盖: 基类virtual函数,派生类有同名相同参数函数时会覆盖基类原函数,即使派生类转成基类指针也访问不到基类原函数,访问的一定是派生类的函数
而藏的情况只要把指针转成基类的指针就可以访问到基类的函数)
指针和引用区别
(相同点:都是地址的概念,指针指向一块内存,内容是所指内存的地址; 引用是某块内存的别名
区别:指针变量需要编译器为它分配4个字节的内存,而引用不占任何内存空间,且引用一定不能为空,引用没有const)
(相同点:都是地址的概念,指针指向一块内存,内容是所指内存的地址; 引用是某块内存的别名
区别:指针变量需要编译器为它分配4个字节的内存,而引用不占任何内存空间,且引用一定不能为空,引用没有const)
vector,deque,list优缺点,适用情况
vector(就是动态数组,元素连续存放,有保留内存,如果内存空间不够时,会申请一块足够大的内存并进行内存的拷贝,由于内存空间连续,所以在中间进行插入和删除会造成内存块的拷贝,这些都大大影响了vector的效率,对任何元素访问都是O(1),也就是常数,适合做随机访问容器)
list(就是双向链表,元素也在堆中存放,它的内存空间可以是不连续的,通过指针来进行数据访问,这个特点使得它的随机存取效率很低,因为没有[]操作符的重载,但可以很好的支持任意地方的插入和删除.list没有空间预留,插入元素要分配内存,删除元素要释放内存,适合做随机操作容器)
deque(是双端队列,也是在堆中保存内容的,deque可以在前后快速的添加删除元素,有很高的随机访问速度,支持[]操作符,deque是按页或块来分配存储器的,每页包含固定数目的元素,页与页之间有指针指向,像是list和vector的结合品.vecotr只在尾端插入元素才有效率,而deque在前后端都提供常数时间的插入删除操作,而且体积增长方面也比vectgor更具有效率.)
一般原则(1,需要高效的随机存取,而不在乎掺入和删除的效率用vector. 2,需要大量的插入和删除,而不在乎随机存取用list. 3,需要随机存取,并且关心两端数据的插入和删除用deque.)
vector(就是动态数组,元素连续存放,有保留内存,如果内存空间不够时,会申请一块足够大的内存并进行内存的拷贝,由于内存空间连续,所以在中间进行插入和删除会造成内存块的拷贝,这些都大大影响了vector的效率,对任何元素访问都是O(1),也就是常数,适合做随机访问容器)
list(就是双向链表,元素也在堆中存放,它的内存空间可以是不连续的,通过指针来进行数据访问,这个特点使得它的随机存取效率很低,因为没有[]操作符的重载,但可以很好的支持任意地方的插入和删除.list没有空间预留,插入元素要分配内存,删除元素要释放内存,适合做随机操作容器)
deque(是双端队列,也是在堆中保存内容的,deque可以在前后快速的添加删除元素,有很高的随机访问速度,支持[]操作符,deque是按页或块来分配存储器的,每页包含固定数目的元素,页与页之间有指针指向,像是list和vector的结合品.vecotr只在尾端插入元素才有效率,而deque在前后端都提供常数时间的插入删除操作,而且体积增长方面也比vectgor更具有效率.)
一般原则(1,需要高效的随机存取,而不在乎掺入和删除的效率用vector. 2,需要大量的插入和删除,而不在乎随机存取用list. 3,需要随机存取,并且关心两端数据的插入和删除用deque.)
指针的几种典型应用情况
int *p[n]; -----指针数组,每个元素均为指向整型数据的指针
int (*)p[n]; ------p为指向一维数组的指针,这个一维数组有n个整型数据
int *p(); ----------函数带回指针,指针指向返回的值
int (*)p(); ------p为指向函数的指针
int *p[n]; -----指针数组,每个元素均为指向整型数据的指针
int (*)p[n]; ------p为指向一维数组的指针,这个一维数组有n个整型数据
int *p(); ----------函数带回指针,指针指向返回的值
int (*)p(); ------p为指向函数的指针
内联函数,构造函数,静态成员函数不能为virtual函数.
内存分配方式有三种
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存
Extern "c"是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数.这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++能直接调用C函数,加上extren "c"后,C++就能直接调用C函数了.
Extern "c"主要使用正规DLL函数的引用和导出和在C++包含C函数或C头文件时使用.使用时在前面加上extern "c" 关键字即可.
Extern "c"主要使用正规DLL函数的引用和导出和在C++包含C函数或C头文件时使用.使用时在前面加上extern "c" 关键字即可.
- 部分总结
- 部分总结
- Php部分常见问题总结
- Php部分常见问题总结
- Php部分常见问题总结
- Php部分常见问题总结
- IE部分功能总结
- oracle部分技巧总结
- Php部分常见问题总结
- java部分概念总结
- jQuery的部分总结
- struts2的部分总结
- ACM 个人总结部分
- WWF部分特点总结
- String总结-部分
- 并行计算部分总结
- Mobile部分技术总结
- 部分PHP问题总结
- 3.Spring bean常见属性的注入:applicationContext-beans.xml
- JMX
- 4.Spring bean常见属性的注入:applicationContext-editor.xml
- 没有完美的软件:编程永远不容易
- dotnet读sybase数据库乱码问题一解
- 部分总结
- 代码审查“思维导图”
- JQuery Mobile移动Web应用开发(2):开发环境搭建
- java的同步机制
- 5.Spring bean常见属性的注入:测试
- php 函数重载
- Overloading with Widening、Boxing and Var-args
- 设计模式——中介者
- 全国各地骗子大比武