IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++11 auto详解(网络整理) -> 正文阅读

[C++知识库]C++11 auto详解(网络整理)

/* 
 * C++11中,auto 可以让编译器在编译器就推导出变量的类型。
 * 
 * auto不是一个类型的“声明”,而是一个“占位符”。
 * 编译器在编译期会将auto替换为变量实际的类型。
 * 使用auto定义变量时必须对其进行初始化。
 * 在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。
 * 它自动推导变量类型是根据“=”右侧的变量类型决定的。
 *
 * 总结:
 *      auto 的使用必须马上初始化, 否则无法推导出类型
 *      auto 在一行定义多个变量时, 各个变量的推导不能产生二义性, 否则编译失败
 *      auto 不能用作函数参数
 *      auto 在类中不能用作非静态成员变量
 *      auto 不能定义数组, 可以定义指针
 *      auto 无法推导出模板参数
*/

int main()
{
	// ①auto 在同一行定义多个变量
	int a = 3,b = 4,c = 5;
	double d = 3.0;

	// ②auto 可以与指针、引用连用
	auto a1 = a, &a2 = a, *a3 = &a;

	// ③auto 必须初始化,否则无法推导类型
	auto e;	//error

	// ④auto 在同一行同时初始化两种类型会产生 二义性
	auto b1 = d, b2 = a;	//error

	system("pause");
	return 0;
}

class A {
	// ⑤auto 不能用作非静态成员变量
	auto a = 1; //error

	// 在类中只允许静态成员变量的声明,初始化必须在类外进行.
	// 静态常量成员可以在类中声明初始化,(静态成员属于类只有一份,常量成员又只能初始化一次而且不能被赋值)
	static auto b = 1; //error
	static const auto c = 1;
};


// ⑥auto 不能作为函数的参数
// 参数要被编译成指令,但是开辟空间时候需要知道空间大小,auto做参数不知道多大,那么栈帧也不知道开多大。
// 此处代码编译失败,auto不能作为形参类型,因为编译器无法对a的实际类型进行推导
void TestAuto(auto a)//error
{}


// ⑦auto 不能直接用来声明数组
// 因为数组也涉及大小,在下面的例子中,a的类型严格来说是 int[3],所以b的大小也不确定。
void TestAuto()
{
	int a[] = { 1,2,3 };
	auto b[3] = a;//error
	auto c = a;  //可以定义指针
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 23:42:02  更:2021-07-15 23:42:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 6:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码