码迷,mamicode.com
首页 > 编程语言 > 详细

C++类到底存不存在缺省无参构造函数

时间:2014-12-22 00:49:24      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

学习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++类到底存不存在缺省无参构造函数

标签:

原文地址:http://www.cnblogs.com/pocean/p/4177323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!