问题:为什么父类必须要有无参构造函数才能通过编译?
代码如下
#include<iostream>
using namespace std;
class A
{
public:
int x;
A(){}//去掉这句就不可通过编译
A(int i):x(i){}
};
class B:public A
{
public:
B(int j)
{x= j;}
};
int main()
{
return 0;
}
或者需要如下代码,才能通过
#include<iostream>
using namespace std;
class B
{
public:
int x;
B(int i):x(i){}//“:”后对应的是基类的构造函数以及对象成员对应的参数初始化
};
class A:public B
{ int a;
public:
A(int j):a(j*10),B(2)
{cout<<"B::x="<<x<<"A::a="<<a<<endl;}
};
int main()
{
A d(1);
}
我的疑惑是,对于代码一,去掉A的构造函数为何就不可编译过?
对于代码二,为何去掉B(2),并对x赋值后,却不能编译过?B(2)不也是对x赋值吗?