c++中的auto关键字

朴灿烈づ我的快乐病毒、 2022-05-09 09:06 319阅读 0赞

auto的属性特征

  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. //1.auto 变量必须在定义时初始化,类似于const
  5. auto i1 = 0; auto i2 = i1;
  6. //auto i3; //错误,必须初始化
  7. //2.如果初始化表达式是引用,则去除引用语义
  8. int a1 = 10;
  9. int &a2 = a1; // a2是引用
  10. auto a3 = a2; // a3是int类型,而不是引用
  11. auto &a4 = a1; // a4是 引用
  12. //3.去除顶层const
  13. const int b1 = 100;
  14. auto b2 = b1; // b2 是 int
  15. const auto b3 = b1; // b3是 const int
  16. //4.带上底层const
  17. auto &b4 = b1; // b4 是 const int 的引用
  18. //5.初始化表达式为数组时,推导类型为指针
  19. int arr[3] = { 1,2,3 };
  20. auto parr = arr; //parr 是 int * 类型
  21. cout << typeid(parr).name() << endl;
  22. //6.表达式为数组且auto带上&,推导类型为数组
  23. auto &rarr = arr; //rarr 是 int [3]
  24. cout << typeid(rarr).name() << endl;
  25. //7.函数参数类型不能是 auto
  26. //func(auto arg); //错误
  27. //8.auto并不是一个真正的类型,编译时确定
  28. //sizeof(auto); 错误
  29. return 0;
  30. }

auto使用实例

auto推导的一个最大的优势在于拥有初始化表达式的复杂类型变量声明时简化代码

  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. using namespace std;
  5. int main() {
  6. vector<string> vs =
  7. { "all","people","like","c++" };
  8. for (vector<string>::iterator i =
  9. vs.begin(); i != vs.end(); i++)
  10. cout << *i << " ";
  11. cout << endl;
  12. for (auto i = vs.begin(); i != vs.end(); i++)
  13. cout << *i << " ";
  14. cout << endl;
  15. for (auto &s : vs)
  16. cout << s << " ";
  17. cout << endl;
  18. return 0;
  19. }

auto的详细参考

auto详细解释

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++11学习笔记: auto关键字

    auto关键字相当于一个类型占位符。在某些场景下使用可以在一定程度上简化代码。如:替换名称比较长的类型(STL容器); 定义lambda表达式指派的变量; 泛型编程。但如果类型

    相关 C++ auto关键字

    C中的auto关键字没啥大用,因为它是用于显式地说明变量是自动存储类型的,但是auto又只能用于默认就是自动存储的局部变量,即函数中定义的变量和函数的参数,所以·····emm

    相关 C++之auto关键字

    【在那些情况下要申明类型】 定义变量类型 函数返回值,函数参数 表达式返回变量类型 【为什么auto】 在开发实践中,有时候我们并不能非常容易地确定一个变量