【正确答案】
【答案解析】默认构造函数不可以调用单参数的构造函数。程序示例如下:
#include<iostream>
using namespace std;
class A
{
public:
A()
{
A(0);
Print();
}
A(int j):i(j)
{
printf("Call A(int j)/n");
}
void Print()
{
printf("Call Print()/n");
}
int i;
};
int main()
{
A a;
cout<<a.i<<endl;
return 0;
}
程序输出结果:
Call A(int j)
Call Print()
-858993460
以上代码希望默认构造函数调用带参构造函数,可是却未能实现。因为在默认构造函数内部调用带参的构造函数属用户行为而非编译器行为,它只执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。