当前位置: 首页 > news >正文

C++ 关键字小结

1. default

=default 一般会放在默认的构造函数,析构函数,拷贝构造函数,拷贝赋值函数,用来显示的表示需要编译器创造默认的上述几类函数。比如,用户如果写了自己的构造函数,那么编译器就不会创造默认的构造函数了,这有可能会带来编译错误。看如下的代码。

#include <iostream>
using namespace std;


class A{
public:
    A(int b){
        a = b;
    }

private:
    int a;

};

int main(){

    A a1; // 调用默认的构造函数
    A a2(1); // 调用用户自己创建的带参数的构造函数

    return 0;
}

编译上面的代码,会显示如下错误:

error: no matching function for call to ‘A::A()’

这表示编译器没有找到不带参数的默认构造函数,所以需要显式的人为加上,如下:

#include <iostream>
using namespace std;

class A{
public:
    A() = default;
    // A(){}
    A(int b){
        a = b;
    }
private:
    int a;
};

int main(){
    A a1; // 调用默认的构造函数
    A a2(1); // 调用用户自己创建的带参数的构造函数
    return 0;
}

2. delete

=delete 的作用和=default 有点相反,是显式的表示不用某个默认的函数。比如,有时候我们不想使用默认的拷贝构造函数,就可以写如下的代码。

#include <iostream>
using namespace std;

class A{
public:
    A() = default;
    A(int b){
        a = b;
    }

    A(const A&) = delete; // 不能使用默认的拷贝构造函数
private:
    int a;
};

int main(){
    A a1; // 调用默认的构造函数
    A a2(1); // 调用用户自己创建的带参数的构造函数
    A a3 = a1;
    return 0;
}

在执行A a3 = a1;时,程序就会报错,因为该行调用了默认的拷贝构造函数,报错信息如下:

error: use of deleted function ‘A::A(const A&)’

相关文章:

  • 使用 Elasticsearch 和 OpenAI 构建生成式 AI 应用程序
  • Java+SpringBoot构建智能捐赠管理平台
  • re:从0开始的CSS之旅 13. 文档流
  • 第十九篇【传奇开心果系列】Python的OpenCV库技术点案例示例:文字识别与OCR
  • 服务器安装Docker (centOS)
  • 《走进科学》灵异事件:Nginx配置改了之后一直报错
  • RabbitMQ交换机
  • 融资项目——获取树形结构的数据
  • MyBatis之Like模糊查询的两种实现方式
  • A股上市以来涨幅排行榜
  • 2024刘谦春晚第二个扑克牌魔术
  • [Python进阶] 识别验证码
  • tkinter-TinUI-xml实战(10)展示画廊
  • 第三百一十回
  • JUnit实践教程——Java的单元测试框架
  • c语言贪食蛇游戏
  • python Flask与微信小程序 统计管理
  • 【Linux学习】生产者-消费者模型
  • 【FPGA】VHDL:八段码到8421BCD码转换电路
  • idea:如何连接数据库
  • 两部门调度部署“五一”假期安全防范工作,要求抓好旅游安全
  • “五一”逃离城市计划:带上帐篷去大自然里充电
  • 莫名的硝烟|“我们最好记住1931年9月18日这个日子”
  • 辽宁辽阳市白塔区一饭店发生火灾,事故已造成22人遇难3人受伤
  • “麒麟王”亮相上海彩市,体彩即开票“瑞兽家族”迎来新成员
  • 王毅:妥协退缩只会让霸凌者得寸进尺