首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++奇迹之旅:左右值&&左右值引用&&move应用(文末送书)

C++奇迹之旅:左右值&&左右值引用&&move应用(文末送书)

作者头像
鸽芷咕
发布2025-05-31 14:34:23
发布2025-05-31 14:34:23
9400
代码可运行
举报
文章被收录于专栏:C++干货基地C++干货基地
运行总次数:0
代码可运行

引入

  哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。

一、 auto

C++98中auto是一个存储类型说明符,表示变量是局部自动存储类型。但是在局部域中定义变量时,默认就是自动存储类型,因此C++98中auto的用法显得并不太有价值。

C++11中,auto不再是存储类型说明符,而是一种实现"自动类型推导"的关键字。也就是说,当你使用auto定义一个变量时,编译器会根据变量的初始化表达式自动推导出该变量的类型。

比如:

代码语言:javascript
代码运行次数:0
运行
复制
auto x = 5; // x的类型会被推导为int
auto y = 3.14; // y的类型会被推导为double

C++11中auto的使用需要满足两个条件:

  1. 必须有显式的初始化表达式,编译器才能根据这个表达式推导出变量的类型。
  2. . 初始化表达式必须能唯一地确定变量的类型,编译器才能进行正确的推导。

1.1 decltype

在C++11中引入了decltype关键字,它可以用来获取表达式的类型。与auto不同,decltype不会进行类型推导,而是直接采用表达式的类型。

使用decltype的一般形式是:

代码语言:javascript
代码运行次数:0
运行
复制
decltype(expression) variable;

这里,expression是一个合法的表达式,decltype会根据表达式推导出其类型,并将该类型应用到变量的声明中。

比如:

代码语言:javascript
代码运行次数:0
运行
复制
int x = 5;
decltype(x) y = 10; // y的类型是int

std::vector<int> v = {
   1, 2, 3};
decltype(v.begin()) it = v.begin(); // it的类型是std::vector<int>::iterator

关键字decltype将变量的类型声明为表达式指定的类型。

代码语言:javascript
代码运行次数:0
运行
复制
// decltype的一些使用使用场景
template<class T1, class T2>
void F(T1 t1, T2 t2)
{
   
	decltype(t1 * t2) ret;
	cout << typeid(ret).name() << endl;
}
int main()
{
   
	const int x = 1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引入
  • 一、 auto
    • 1.1 decltype
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档