C++ 11(2.0)新特性 03(变量统一初始化,auto、nullptr关键字)

本文深入探讨C++11中的变量统一初始化方式,详细解释了auto关键字如何简化类型推断,以及nullptr作为安全的空指针常量的使用。通过代码示例,帮助读者理解这些新特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


代码示例
void f(int) { }
void f(void*) { }

int main(int argc, char* argv[])
{
	// C++2.0以前初始分为小括号、中括号、大括号都可以初始化
	string str("initialize");
	int iarr[2] = { 1, 2 };

	// C++2.0以后统一使用这样的方式初始化
	int x { 100 }; // initialize value
	int arr[] {1, 2, 3}; // initialize value
	string lstr{ "POWERFUL" };
	vector<string> data { "CAT", "DOG", "MOUSE" }; // initialize value

	// C++2.0以后新增了auto,自动类型判断,根据表达式右边的值自动判断类型
	// auto的设计初衷是为了解决类型过于复杂或对类型记忆模糊的时候使用
	auto *p = &data; // auto keyword
	auto it = p->begin();

	// C++2.0以前只有NULL,表示数据指向为一个NULL的内存模块
	//其实#define NULL    0是这样定义的
	//如果有重载函数f(int)和f(void*),使用NULL有歧义,两个都可以
	//为了解决这样的问题,C++2.0新增了nullptr明确是一个指针类型
	f(0);
	f(nullptr); // nullptr replace NULL
	cout << "x:" << x << endl;
	cout << "arr[1]:" << *(arr + 1) << endl;
	cout << "data[1]:" << data.at(1) << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值