C++11比C++98(普通C++)的新特性

笔记一

  • 摘要

    默认或者禁用
    当我们定义了自己的带参数的构造函数时,编译器将不再生成默认的构造函数,如果此时想使用默认的构造函数,则必须显式地声明并定义不带参数的构造函数。在C++ 11中,我们可以使用default关键字来表明我们希望使用默认的构造函数。类似的,当我们不想外部使用编译器自动生成的构造函数或赋值函数时,我们一般需要将其声明成protected或private的。在C++ 11中,我们可以使用delete关键字来表明我们不希望编译器生成默认的构造函数或赋值函数
    CPerson() = default; //CPerson的构造函数
    CPerson(const CPerson &person) = delete;​//CPerson的拷贝构造函数
    nullptr
    nullptr是C++ 11中新加的一个关键字,用于标识空指针。引入nullptr后,可以
    解决某些函数重载时的二义性问题
    但是在C++11中调用f(int),方法f(char *)调用方式:f(nullptr)。
    类型别名​
    typedef int (addptr*)(int a,int b);​
    C++11中可以这样:using addptr = int (int,int);​
    初始化列表
    在引入C++ 11之前,只有数组能使用初始化列表。在C++ 11中一下都是合法的:
    1 int a{5}; ​
    2 char c{‘X’};
    3 int p[5] = {1, 2,3, 4, 5};
    4 vector vctTemp{1, 2, 3};
    5 CPerson person{10, “Mike”};
    6 int b = 5.3; // b赋值成5,发生了窄转换
    7 int d{5.3}; // 会提示编译错误,避免了窄转换
    map m_map = {{“test”,1},{“test2”,2}};​//不需要构造键值对
    vector test()
    {
    return{“1”,”2”,”3”};//列表初始化返回值
    }

  • 参考链接
    http://www.cnblogs.com/swarmbees/p/5621577.html

笔记二

展开阅读全文

没有更多推荐了,返回首页