C++中auto型的详细解释
2016-06-02 14:56
459 查看
auto:
用来声明自动变量。它是存储类型标识符,表明变量(自动)具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。 其实大多普通声明方式声明的变量都是auto变量,他们不需要明确指定auto关键字,默认就是auto的了。auto变量在离开作用域是会变程序自动释放,不会发生内存溢出情况(除了包含指针的类)。使用auto变量的优势是不需要考虑去变量是否被释放,比较安全吧。
new:
new是用来在堆上申请内存地址的关键字,他产生的变量不会自动释放,除非delete来手动释放,或者程序结束时由操作系统释放,使用new的优势是内存使用比较灵活,理论可以申请任意大小的内存区块(实际与操作系统有关),但这很容易产生问题,一不小心忘记释放对象,特别是在频繁调用的函数内创建的对象忘记释放时,会产生内存溢出,严重时导致程序出错,系统崩溃。
new一般都是在类的定义中使用,结合delete可以使包含new出来对象的类也具有自带变量功能,这样就继承了两种方式的优势。
--------------------------------------------------------------
另外,最新的C++标准更新了auto关键字的功能
除了具有原有的含义外,还增加了一种类似其他高级语言的型别推导特性,使用auto来代替变量的类型,前提是被明确类型的初始化变量初始化的,可以使用auto关键字
比如int i=10; auto a = i; //这样a也是int类型了
这在使用一些模板类的时候,对于减少冗赘的代码也很有用
---------------------------------------------------------------
另外一个题外话:auto的对应类型不是使用new出来的变量,而是static变量
static变量是程序接收的时候才释放对象的,但它不需要手动释放。
static如果在一个函数内申明,这每次进入这个函数时,还是使用第一次声明的变量,并且还保存的上次使用的值(auto变量这时函数结束是即释放了,再次调用这个函数是,有重新定义了一个新的变量)
static变量如果在结构和类中使用,这结构或类定义的一切对象,都将共享唯一static变量。
相关文章推荐
- 小范围排序(C++)
- C语言+SDL2 图形化编程
- C/C++程序员必须熟练应用的开源项目
- C语言练习篇-5二维数组行列交换及找最大值
- 图 单源最短路径求解 Dijkstra算法 C++ 实现
- C语言学习篇-7数组、二维数组、高维数组
- C++矩阵处理工具——Eigen
- C语言的指针(进阶篇章之一)
- c++学习
- g++编译c++11
- 关闭Eclipse的c++ indexer功能
- C++作业7
- md5C++加密
- C++ 冒泡排序
- volatile unsigned char; volatile有利于全局变量的实时更新,尤其含有中断中改变的量
- C++作业7
- c++实验7--最大公约和和最小公倍数
- C++ ,输入5个数,让最大值和第一 个数交换,让最小值和最后一个数交换
- C++编程(数组) 去除最大值和最小值,评委的平均分。
- c++作业7