当前位置: 首页 > wzjs >正文

杭州网站建设方案服务公司电商培训机构靠谱吗

杭州网站建设方案服务公司,电商培训机构靠谱吗,做58同城网站需要多少钱,javaee做的是网站吗目录 1. 什么是 auto? 2. 基本用法 3. 常见使用场景 (1) 简化复杂类型 (2) 范围 for 循环 (3) Lambda 表达式 (4) 模板函数返回类型 (5) 函数指针中的应用 4. auto 的修饰符 5. 注意事项 1. 什么是 auto? auto 是一个关键字,最初…

目录

1. 什么是 auto?

2. 基本用法

3. 常见使用场景

(1) 简化复杂类型

(2) 范围 for 循环

(3) Lambda 表达式

(4) 模板函数返回类型

(5) 函数指针中的应用

4. auto 的修饰符

5. 注意事项

1. 什么是 auto?

auto 是一个关键字,最初在 C++ 中用于声明自动存储期的变量(与 static 相对),但在 C++11 中被重新定义为类型推导工具。它允许编译器根据变量的初始化表达式自动推导出变量的类型,而无需程序员显式指定。

2. 基本用法

使用 auto 时,必须提供初始化值,因为编译器依赖初始化表达式来推导类型:

#include <iostream>int main() {auto x = 42;         // 推导为 intauto y = 3.14;       // 推导为 doubleauto z = "Hello";    // 推导为 const char*std::cout << x << " " << y << " " << z << std::endl;return 0;
}

3. 常见使用场景

(1) 简化复杂类型

对于复杂的类型(如 STL 迭代器),auto 能显著减少代码冗余:

#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3};auto it = vec.begin(); // 推导为 std::vector<int>::iteratorstd::cout << *it << std::endl; // 输出 1return 0;
}

(2) 范围 for 循环

在范围 for 循环中,auto 常用于遍历容器:

std::vector<int> vec = {1, 2, 3};
for (auto num : vec) {std::cout << num << " ";
}
// 输出: 1 2 3

(3) Lambda 表达式

auto 常用于保存 lambda 表达式的类型,因为其类型复杂且难以手动指定:

auto lambda = [](int a, int b) { return a + b; };
std::cout << lambda(3, 4) << std::endl; // 输出 7

(4) 模板函数返回类型

C++14 支持用 auto 推导函数返回类型:

template <typename T, typename U>
auto add(T a, U b) {return a + b; // 返回类型由编译器推导
}

(5) 函数指针中的应用

auto 可以用来简化函数指针的声明。函数指针的传统写法往往冗长且易出错,而 auto 让代码更简洁。

示例: 假设有一个函数 int add(int, int),我们可以用 auto 声明指向它的函数指针:

#include <iostream>int add(int a, int b) {return a + b;
}int main() {// 传统函数指针写法int (*funcPtr)(int, int) = add;// 使用 autoauto funcPtr_auto = add; // 推导为 int (*)(int, int)std::cout << funcPtr(2, 3) << std::endl;      // 输出 5std::cout << funcPtr_auto(4, 5) << std::endl; // 输出 9return 0;
}

解释:

  • auto funcPtr_auto = add; 中,add 是一个函数名,隐式转换为函数指针。

  • 编译器推导出 funcPtr_auto 的类型为 int (*)(int, int),即指向接受两个 int 参数并返回 int 的函数指针。

  • 注意:如果需要显式指定函数指针的类型,可以用 auto*,但通常不需要,因为 auto 已足够。

复杂示例: 当函数指针嵌套在容器中时,auto 的优势更明显:

#include <vector>
#include <iostream>void sayHello() { std::cout << "Hello\n"; }
void sayGoodbye() { std::cout << "Goodbye\n"; }int main() {std::vector<void (*)()> funcs = {sayHello, sayGoodbye};auto func = funcs[0]; // 推导为 void (*)()func();               // 输出 Helloreturn 0;
}

4. auto 的修饰符

auto 可以与 const、&(引用)、*(指针)等结合使用:

int x = 10;
auto a = x;       // int
auto& b = x;      // int&(引用)
auto* c = &x;     // int*(指针)
const auto d = x; // const int
  • 默认情况下,auto 会丢弃 const 和 volatile,需要显式指定。

  • 对于函数指针,auto 直接推导为指针类型,无需额外加 *。

5. 注意事项

  • 必须初始化:auto x; 是非法的。

  • 可读性:过度使用可能隐藏类型信息,建议在类型显而易见时使用。

  • 函数指针特例:auto 推导函数指针时,不会意外变成函数类型,而是直接推导为指针。

http://www.dtcms.com/wzjs/489942.html

相关文章:

  • 做网站不用服务器吗国内最新新闻消息今天的
  • 网站正在紧急建设中郑州网站顾问热狗网
  • 沧州网站设计多少钱seo技术优化技巧
  • 模具公司网站中品质见证怎么做无锡seo培训
  • 数据查询网站建设夸克搜索引擎入口
  • 做网站流行的十大免费网站推广入口
  • 东莞网站建设制作哪家好南昌seo排名优化
  • h5响应式网站设计方案百度云资源搜索
  • 建公司网站的公司个人免费网站创建入口
  • 做网站数据需求分析seo云优化软件
  • 手机网投网站建设网站宣传推广方案
  • 网站内链 外链如何做好seo优化
  • 制作灯笼英语网络营销郑州优化推广公司
  • 网站被墙 怎么做301昆明seo优化
  • 梧州论坛武汉seo百度
  • 加强网站政务服务建设百度指数怎么看
  • 个人网站建设挂载下载链接百度权重网站排名
  • 部门网站建设方案乐云seo
  • 怎么做搜索网站济南百度推广优化
  • 问卷调查网站哪个好新闻头条今日最新消息
  • 怎么根据网站前端做网站后台正规网络公司关键词排名优化
  • 长春优化所长沙官网seo技巧
  • 廊坊设计网站公司免费推广软件 推广帮手
  • 商城网站开发多久百度网盘网站入口
  • 个人网站模板怎么做网站seo置顶 乐云践新专家
  • 阿里建站平台官网公司员工培训方案
  • 做网站ftp如何查询百度收录情况
  • 室内装修效果图网站有哪些网页关键词优化软件
  • 用宝塔做网站谷歌搜索引擎优化seo
  • 做外汇有哪些正规的网站微信推广引流加精准客户