C++の相关概念
文章平均质量分 63
....
今天你头秃了吗?
这个作者很懒,什么都没留下…
展开
-
map的内存释放
map在erase和clear后是否会马上释放内存参考链接:关于c++中map的内存占用问题 (原文)原文提到map在erase和clear后不会立马释放内存,而是采用类似内存池的机制,对申请的内存进行”预留“,在一段时间内不使用才会予以“释放”。 (在编译器MSVC1930的实际测试中)大内存空间在erase和clear后会立马释放 (猜测)小内存空间在erase和clear后会被内存池回收delete+erase:编译器M原创 2022-05-08 16:26:04 · 4136 阅读 · 0 评论 -
【C++の相关概念】静态数组[]和动态数组new的区别
使用sizeof运算int a[5]; sizeof(a)=20;sizeof(*a)=4;//因为整个数组共占20字节//首个元素(int型)占4字节。int *a=new int[4];sizeof(a)=sizeof(*a)=4//因为地址位数为4字节//int型也占4字节。作为函数形参存储和运行方式参考:C++ 静态数组([])和动态数组(new)的区别...原创 2021-03-16 14:08:59 · 252 阅读 · 0 评论 -
【C++の相关概念】<stdarg.h>
<stdarg.h>主要用于参数个数未知(即参数个数可变)时获取函数中的参数。va_list类型,typedef char *va_list;_INTSIZEOF(n)变量,#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )//保证字节数为int的整数倍va_start宏,获取可变参数列表的第一个参数的地址(list是类型为va_list的指针,param1是可变参数最左边原创 2021-03-14 13:36:26 · 194 阅读 · 0 评论 -
【C++の相关概念】重温前缀++与后缀++
前缀++与后缀++的本指区别是什么?int i = 0, n = 0;int test = ++i;//此时,test等于1,i也等于1test = n++;//此时,test等于0,n等于1因此,要说本质区别就是前缀加加返回自增后的自己,而后缀加加是返回自增前的值前缀++与后缀++的类成员函数重载是怎样的?Complex& operator++()//前缀++重载 返回的是引用Complex operator++(int)// 后缀++重载写法 (int) 区分前缀的必须写成原创 2021-02-03 22:46:55 · 689 阅读 · 0 评论 -
【C++の相关概念】operator->重载
代码实例operator->重载不同于其他的重载运算符,接下来将用两个例子来说明:class A{ public: int i; A(){i = 100;} void print( int a){printf("%d/n", a);} A* operator->(){ return this;}};int main(){ int ret; A a; ret = a->i; a->print(200原创 2021-01-21 22:29:25 · 431 阅读 · 0 评论 -
【C++の相关概念】typename关键字的使用方法和注意事项
typename关键字的使用方法和注意事项1, 什么地方使用?2, 模板中标明“内嵌依赖类型名”3,例外)1, 什么地方使用?用在模板定义里,标明其后的模板参数是类型参数。例如template<typename T, typename Y>T foo(const T& t, const Y& y){//…};templaceclass CTest{private:T t;public://…}其实,这里最常用的是使用关键字class,而且二者功能完转载 2021-01-20 20:21:04 · 112 阅读 · 0 评论 -
【C++の相关概念】指针数组 数组指针 二维数组传参
指针数组和数组指针指针数组:是指一个数组里面装着指针,也即指针数组是一个数组;int *a[10]; 数组指针:是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已;int(*a)[10]; //a指向一个列数为10的二维数组区分方法:主要看后面的两个字是什么(前面是修饰作用),因此指针数组是数组,而数组指针是指针。二维数组传参形参为二维数组声明void function(int a[m][n]);//函数声明void function(int (&a)[m原创 2021-01-18 21:41:53 · 336 阅读 · 0 评论