Sum*_*812 2 c++ constructor class
好的,我有一个非常简单的任务.
我为类Person提供了这两个构造函数:
Person( const string &, const string &, const string & );
Person( const string &, const string &, const string &,
const string & );
Run Code Online (Sandbox Code Playgroud)
我有4个默认值
其中哪些将成为默认构造函数?它总是最具争议的一个或它是如何工作的?
根据C++标准
4类X的默认构造函数是类X的构造函数,可以在没有参数的情况下调用.
从您的帖子中不清楚您所说的默认值.您的声明都不是默认构造函数.
如果您在声明中谈论默认参数
Person( const string & = "", const string & = "", const string & = "",
const string & = "" );
Run Code Online (Sandbox Code Playgroud)
然后,此声明是默认构造函数的声明,因为它可以在没有任何显式指定的参数的情况下调用.
有趣的是,同一构造函数可以同时是默认构造函数和非默认构造函数.至少C++标准没有说任何禁止这一点的内容.
例如
struct A
{
A( int x );
int x;
};
A a1; // error: there is no default constructor
A::A( int x = 0 ) : x( x ) {}
A a2; // well-formed there is a default constructor.
Run Code Online (Sandbox Code Playgroud)
这两个构造函数都不是默认构造函数.
默认构造函数是您可以在没有参数的情况下调用的构造函数 - 因为
示例中的两个构造函数都要求将参数传递给它们,因此它们都不是默认参数.