类型推导用法
- 为什么会引入类型推导?
- 有哪些关键字?原理是什么?有什么规则?通常应用是什么?
类型推导关键字 auto 与 decltype
auto 规则
#include <iostream> using namespace std; int main(){ { const int &i = 10; auto j = i; //类型推导时会丢失引用、const语义 auto &k = i; //保留引用或 cv 语义 j = 11; //可修改 cout << " j = " << j << endl; k = 12; //error: assignment of read-only reference 'k' //万能引用,根据初始值属性来判断是左值引用还是右值引用 auto&& m = i; //左值引用 auto&& n = 10; //右值引用 } return 0; }
decltype 规则
#include <iostream> using namespace std; int main(){ { int a = 1; float b = 2.0; decltype(a+b) c = a + b; cout << "a+b= " << c << typeid(c).name() << endl; //a+b= 3f auto f = [](int a, double b) { //匿名函数 return a + b; }; decltype (f(a, b)) d = b; //会将a的int类型与b的float类型都转换为double类型 cout << "d= " << d << typeid(d).name() << endl; //d= 2d decltype (a+=b) e = a; //左值引用 e = 19; cout << "a= " << a <<typeid(a).name() << endl; //a= 19, e的值修改, a的值得修改了 } return 0; }
充电站
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习