#include<iostream>
using namespace std;
class abc{
int a;
public: abc() { } //do nothing constructor
abc(int x=6){ a=x;} //constructor with default argument
};
main()
{
abc a;
....
}
我的问题是在这种情况下将调用哪个构造函数?请解释
答案 0 :(得分:1)
由于模棱两可,这将无法编译,因为您可以看到here
prog.cpp:8:7: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
prog.cpp: In function ‘int main()’:
prog.cpp:10:11: error: call of overloaded ‘abc()’ is ambiguous
prog.cpp:10:11: note: candidates are:
prog.cpp:6:12: note: abc::abc(int)
prog.cpp:5:12: note: abc::abc()
答案 1 :(得分:0)
您对构造函数的调用是不明确的。编译器无法知道要调用哪个构造函数,因为您的构造函数之一包含默认参数。
相反,请尝试删除参数的默认值。