C++泛编程1自动推导

在C语言和C++98中,auto关键字用于修饰变量(自动存储的局部变量)。
在C++11中,auto是一个类型指示符,指示编译器在编译时推导auto声明的变量的数据类型。
auto变量注意
1)auto声明的变量必须在定义时初始化。
2)初始化的右值可以是具体的数值,也可以是表达式和函数的返回值等。
3)auto不能作为函数的形参类型。
4)auto不能直接声明数组。
5)auto不能定义类的非静态成员变量。
例如:

auto str = "abc";//这里auto推导出为const char*并非string引起歧义

auto在编程时真正的用途如下:
1.代替冗长复杂的变量声明。
传统的声明函数指针

double func(int a,double b,const char* c){
	cout<<a<<b<<C<<endl;
	return 3.2;
}
int main(){
	double(*pf)(int,double,char);//声明函数指针
	pf = func;
	pf(1,2.2,"abc");
}

使用auto的函数指针

double func(int a,double b,const char* c){
	cout<<a<<b<<C<<endl;
	return 3.2;
}
int main(){
	auto pf1 = func;//auto声明函数指针
	pf1(1,2.2,"abc");
}

2.在模板中,用于声明依赖模板参数的变量。
3.函数模板依赖模板参数的返回值。
4.用于lambda表达式中。

参考:https://www.bilibili.com/video/BV1et4y1u75A/?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click&vd_source=a60906b8f7c2ad439b7a7707558defae

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