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

本文详细介绍了C++11中的新特性,包括默认构造函数的声明与使用、禁用特定构造函数的方法、nullptr关键字的引入及其作用、类型别名的定义方式以及初始化列表的应用等。这些内容对于理解C++11如何改进代码清晰度和安全性非常关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记一

  • 摘要

    默认或者禁用
    当我们定义了自己的带参数的构造函数时,编译器将不再生成默认的构造函数,如果此时想使用默认的构造函数,则必须显式地声明并定义不带参数的构造函数。在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

笔记二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值