C++默认构造函数

代码一:
#include <iostream>
using namespace std;

class AA
{
};

int main()
{
    AA *a=new AA();    
    return 0;
}

执行正确,说明编译器为我们创建了默认了构造函数(没有参数的构造函数)。

代码二:
#include <iostream>
using namespace std;

class AA
{
public:
    AA(){cout<<"自定义默认构造函数"<<endl;}
};

int main()
{
    AA *a=new AA();    
    return 0;
}

执行正确并输出了文本,说明使用了我们自定义的默认构造函数。

代码三:
#include <iostream>
using namespace std;

class AA
{
public:
    AA(int a, int b){}
};

int main()
{
    AA *a=new AA();    
    return 0;
}

执行出错,提示缺少默认的构造函数。

代码四:
#include <iostream>
using namespace std;

class AA
{
public:
    AA(){cout<<"自定义默认构造函数"<<endl;}
    AA(int a, int b){}
};

int main()
{
    AA *a=new AA();    
    return 0;
}

执行正确并输出文本,说明使用了我们自定义的默认构造函数。

总结

在C++中,当我们没有为类定义任何构造函数时,编译会创建默认构造函数;如果我们为类定义了一个构造函数,无论该构造函数是默认构造函数,还是非默认构造函数,编译器都不再为我们创建默认构造函数,在C#中也是这样子的。

评论: 0 | 引用: 0 | 查看次数: 4729
发表评论
登录后再发表评论!