C++11中的简化声明

auto

        用于自动类型推断,显示定义变量

C++11中的简化声明_第1张图片

typeid

        typeid推导出来的是字符串,只能看不能用,通过打印来查看变量的类型,用法如上。

decltype

        同样是用来自动推导类型,与auto的区别是,auto在定义时必须赋值,它需要通过等号右端的常量或者变量来推到类型,如果你只想定义一个变量不希望赋值,就用decltype:

C++11中的简化声明_第2张图片

nulllptr

        为了补NULL的坑。早版本NULL被定义成了字面常量0,但我们期望它的涵义是地址为0的一个指针:

C++11中的简化声明_第3张图片

        C++11用nullptr来表示空指针。

        工程实践中如果NULL被识别成常量0会有bug,比如:

void func(int p)
{
	cout << "int p" << endl;
	return;
}
void func(int* p)
{
	cout << "int* p" << endl;
	return;
}
int main()
{

	func(NULL);
	return 0; 
}

        我们期望它调用func(int*),但是调用了另一个。

        C++11中的简化声明补齐了C++在类型推导方面的短板。

你可能感兴趣的:(c++,开发语言)