zoukankan      html  css  js  c++  java
  • C++类到底存不存在缺省无参构造函数

    学习C++的时候有个问题老是忘,就是缺省无参构造函数,说的是定义类的时候,如果类本身没有构造函数,则调用一个缺省的无参构造函数,如果有构造函数,则就一定要按照构造函数的方式调用,这意味着如果定义了一个有参数的构造函数,那么在定义类的时候就一定要调用有参的那个构造函数,缺省的无参构造函数就不存在了。 说实话,当时学的时候感觉有点不可思议,但还是稀里糊涂的接受了,很多教材也是这样写的,但是真是这样吗,最近折腾llvm,它的IR对编译器动作表示的比较清晰,特意反汇编了一把看看,代码如下:

    #include <iostream>
    using namespace std;
    
    class test {
        public:
        int i;
        //test() {};
    };
    int main(void)
    {
        class test a;
        cout << a.i << endl;
        a.i = 9;
        cout << a.i << endl;
        return 0;
    }

    运行结果:

    -2003910432
    9

    注释去掉,添加自定义构造函数后会报错

    反汇编对比:

    可以看出,并没有所谓的缺省无参构造函数。

  • 相关阅读:
    问题 G: 艰难取舍(dp)
    算式
    问题 G: 背菜谱
    问题 B: 寻路
    问题 D: 数字变换(dfs)
    问题 D: 2的幂数
    问题 C: 幸运数字II(4,7)
    问题 D: 莱布尼茨三角形
    问题 E: 有理数树
    2020年秋高级软件工程”领跑衫“获奖感言
  • 原文地址:https://www.cnblogs.com/pocean/p/4177323.html
Copyright © 2011-2022 走看看