C++关于默认构造函数和无参构造函数
默认构造函数
在不提供任何构造函数的情况下,编译器给出一个不带参数的,不包含代码的构造函数。
#include<iostream>
using namespace std;
class A
{
public:
int val;
};
int main(){
A a; //这里调用的是默认构造函数
cout<<a.val<<endl;
return 0;
}
当已经提供了显式的构造函数,例如:
#include<iostream>
using namespace std;
class A
{
public:
int val;
A(int n){
val = n;
}
};
int main(){
A a; //这里调用的是默认构造函数
cout<<a.val<<endl;
return 0;
}
此时编译就会出错,因为编译器认为已经提供了显式的构造函数就不会再提供默认构造函数了。这时需要添加一个无参构造函数,使得上述代码能够正确编译。
#include<iostream>
using namespace std;
class A
{
public:
int val;
A(){}
A(int n){
val = n;
}
};
int main(){
A a; //这里调用的是无参构造函数
cout<<a.val<<endl;
return 0;
}