首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++11 auto 关键字及 decltype 关键字

C++11中引入的auto主要有两种用途:自动类型推导和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。...新的 auto 关键字在声明一些迭代器、类模板等变量的时候,使用非常方便,具体可以看以下代码,有详细的注释。.... } // new的内存也一定要初始化,否则auto推倒不出到底是什么类型 auto k = 5; auto\* pk = new auto(5); // auto 关键字声明的变量必须初始化...引用类型可以接受 const 变量的反推,其他形式则不行 const int consta = 0; auto constb = consta; return 0; } 使用 auto 关键字有以下几点注意事项...will print int* auto& k = a; cout << typeid(k).name() << endl; // This will print int [9] 【decltype 关键字

24110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C++】C++11的新特性 --- 列表初始化,auto关键字,decltype关键字

    相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...接下来我将通过几篇文章来介绍一下C++11中重要的特性! 2 列表初始化 在C++11中加入了initializer_list标准库类型,用于表示某种特定类型的数组。...3 声明 3.1 auto关键字 在C++98中auto是一个存储类型的说明符,表明变量是局部自动存储类型,但是局部域中定义局部的变量默认就是自动存储类型,所以auto就没什么价值了。...3.2 decltype关键字 关键字decltype将变量的类型声明为表达式指定的类型。他和typeid有点像,不过进行的工作不一样: typeid:是用来查看变量的类型,返回值是一个字符串。...所以出于清晰和安全的角度考虑,C++11中新增了nullptr,用于表示空指针 3.4 总结 这两个关键字在使用中很有可能会变成祸根!

    8710

    C++11

    C++11的大优势 相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言...STL中容器新变化 4.1 新增容器 上面圈起来的就是C++11出现的新容器,但是真正有用的是unordered_map和unordered_set两个容器,其他两个容器显得很鸡肋,这也算是C++11...C++11之前拷贝构造: C++11移动构造: 5.2.2 移动赋值 上面是进行构造,如果我们是进行赋值呢?...C++11之前拷贝构造+拷贝赋值: C++11拷贝构造+移动赋值: 要注意的是: 浅拷贝的类不需要移动构造,深拷贝的类才需要移动构造。 C++11提供右值引用,本质是为了参数匹配时区分左值和右值。...C++11之后,新增了两个成员函数,移动构造和移动赋值函数。

    10610

    【C++修行之道】引用、内联函数、auto关键字、for循环(C++)、nullptr(C++11

    如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的 调用。...短小函数定义 换用内联函数 三、auto关键字(C++11) 3.1 类型别名思考 随着程序越来越复杂,程序中用到的类型也越来越复杂,经常体现在: 类型难于拼写 含义不明确导致容易出错 #include...然而有时候要做到这点并非那么容易,因此C++11给auto赋予了新的含义。...为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法 4. auto在实际中最常见的优势用法就是跟以后会讲到的C++11提供的新式for循环,还有 lambda表达式等进行配合使用...注意: 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。

    3900

    C++11(下篇)

    C++11中,新增了两个默认成员函数 移动构造函数 移动赋值运算符重载 针对这两个新的默认成员函数,有了新的注意事项: 1、如果没有自己实现移动构造,且没有实现析构函数、拷贝构造、拷贝赋值重载中的任何一个...delete 禁止生成默认函数的关键字 比如要求delete关键字实现,一个类,只能在堆上创建对象。...释放ptr指向的空间要用 operator delete(),因为 delete会调用析构 可变参数模板 C++11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板 我们把带省略号的参数称为...= { (PrintArg(args), 0)... }; cout << endl; } int main() { ShowList(1, 'A', 3.14); return 0; } C+...注意: 在lambda函数定义中,参数列表和返回值类型都是可选部分,而捕捉列表和函数体可以为空,C++11中,最简单的lambda函数为:[] () ;该函数不能做任何事情,只是符合语法。

    63710

    C++11 Unicode支持

    这一状况在C++11中得到了一定的改善,从此Unicode字符的存储有了统一类型: (1)char16_t:用于存储UTF-16编码的Unicode字符。...至于UTF-8编码的Unicode数据,C++11还是使用了8bits宽度的char类型数组来表示,而char16_t和char32_t的宽度由其名称可以看出,char16_t为16bits,char32...2.定义字符串的5种方式 除了使用新类型char16_t与char32_t来表示Unicode字符,此外,C++11还新增了三种前缀来定义不同编码的字符串,新增前缀如下: (1)u8表示为UTF-8...当编译器处理字符串时,可以通过前缀来判断字符串的编码类型,如果目标编码与原编码不同,则编译器会进行转换,比如C++11中的前缀u8表示目标编码为UTF-8的字符,如果代码文件采用的是GBK,编译器按照UTF...---- 参考文献 [1]深入理解C++11[M].8.3Unicode支持

    2.5K31
    领券