首页 > 代码库 > C++类到底存不存在缺省无参构造函数
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
注释去掉,添加自定义构造函数后会报错
反汇编对比:
可以看出,并没有所谓的缺省无参构造函数。
C++类到底存不存在缺省无参构造函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。