C++中auto关键字的使用

 更新时间:2023年04月11日 09:00:07   作者:西.北.风  
本文主要介绍了C++中auto关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前提引入

1.类型名,在绝大多数编程时,我们都会引入类型来定义一个我们需要的数据。

类型众多,偶尔我们会遇见一串类型名,使用起来无比复杂。存在拼写错误,含义不明确导致出错的问题。

列如:

std::map<std::string, std::string> m{ { "apple", "苹果" }, { "orange", "橙子" },
{"pear","梨"} };
 
std::map<std::string, std::string>::iterator it = m.begin();

在这串代码中,std::map<std::string, std::string>::iterator 是一个类型,但是该类型太长了,特别容易写错。如何简化呢。

在C中,typedef 作为一个可以取别名的一个关键字。确实可以省事许多,却任然存在缺陷。

typedef std::map<std::string, std::string> Map;

若 typedef 为指针取了别名。存在小问题。

typedef char* pstring;
int main()
{
    const pstring p1; // 编译成功还是失败?
    const pstring* p2; // 编译成功还是失败?
    return 0;
}

C++是怎么做的呢,设计师为了不想写复杂的类型,引入了auto关键字。

auto :

1.在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量

2.C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得

注:既然auto作为推导而得,在使用auto时,必须初始化。

auto 的使用场景

1. auto 在推导指针是,不必再加*号;

2.auto在使用引用时,必须遵循规则加上&号;

3.不能作为函数的参数使用

4.不能直接用来声明数组。

5.一行多个数据推导必须同类型。       

int main()
{ 
    //1
    int x = 10;
    auto a = &x;
    auto* b = &x;
    auto& c = x;
    cout << typeid(a).name() << endl;
    cout << typeid(b).name() << endl;
    cout << typeid(c).name() << endl;
    *a = 20;
    *b = 30;
    c = 40;
    
    //5
    void TestAuto()
    {
        auto a = 1, b = 2;
        auto c = 3, d = 4.0;  //错
    }
 
 
return 0;
}

到此这篇关于C++中auto关键字的使用的文章就介绍到这了,更多相关C++ auto关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++中vector容器的常用操作方法实例总结

    C++中vector容器的常用操作方法实例总结

    vector容器一般被用作创建动态数组,动态数组就像Python中的list结构一样,可以比普通数组拥有更丰富操作方法,下面就为大家整理了一些最常用的操作:
    2016-05-05
  • COLORREF,COLOR,RGB,CString的转化总结分析

    COLORREF,COLOR,RGB,CString的转化总结分析

    实际的软件开发过程中,常需要用到非.net平台的代码。这时候就可能碰到ColorRef(也就是以int类型代表的颜色值或是以DWORD值表示的颜色)。这跟.net平台下的颜色的相互转换MS并没有直接实现
    2013-09-09
  • C语言用函数实现反弹球消砖块

    C语言用函数实现反弹球消砖块

    这篇文章主要为大家详细介绍了C语言用函数实现反弹球消砖块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C/C++编程判断String字符串是否包含某个字符串实现示例

    C/C++编程判断String字符串是否包含某个字符串实现示例

    这篇文章主要为大家介绍了C++编程中判断String字符串是否包含某个字符串的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • 解决c++ error:crosses initialization of 问题

    解决c++ error:crosses initialization of 问题

    最近在写代码的时候,碰到了 crosses initialization of ... 的问题,只因我在 switch 的某个 case 分支下定义了一个变量,于是乎便将这个问题整理一下,需要的朋友可以参考下
    2023-03-03
  • 利用Qt制作简单的日期选择界面

    利用Qt制作简单的日期选择界面

    Qt自带的日期选择控件过于丑陋与难用,所以但凡有点小想法的人都会做一个全新的日历。这篇文章就来利用Qt制作一个简单的日期选择界面,感兴趣的可以了解一下
    2023-03-03
  • 深度解析C语言中数据的存储

    深度解析C语言中数据的存储

    本文详细介绍了C语言中数据的存储,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C语言实现随机抽取纸牌程序

    C语言实现随机抽取纸牌程序

    这篇文章主要为大家详细介绍了C语言实现随机抽取纸牌程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色

    C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色

    这篇文章主要介绍了C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色,需要的朋友可以参考下
    2019-04-04
  • C++数据结构之链表详解

    C++数据结构之链表详解

    这篇文章主要介绍了C++数据结构之链表的创建的相关资料,希望通过本文帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2021-08-08

最新评论