【发布时间】:2011-03-27 11:29:53
【问题描述】:
在 Stanley B. Lippman 的 C++ Primer 书中*,* Josée Lajoie
在 Class Constructors 的第 14.2 章中指出:
我们是否也应该支持指定期初余额但没有客户名称? 碰巧的是,类规范明确禁止这样做。我们的二参数 带有默认第二个参数的构造函数提供了一个完整的接受接口 可由用户设置的 Account 类数据成员的初始值:
class Account {
public:
// default constructor ...
Account();
// parameter names are not necessary in declaration
Account( const char*, double=0.0 );
const char* name() { return _name; } // What is this for??
// ...
private:
// ...
};
以下都是将一两个参数传递给我们的构造函数的合法 Account 类对象定义:
int main()
{
// ok: both invoke two-parameter constructor
Account acct( "Ethan Stern" );
在没有单参数声明的情况下如何调用2参数构造函数??
Account *pact = new Account( "Michael Lieberman", 5000 );
以及上面一行是如何使用默认参数调用构造函数的
if ( strcmp( acct.name(), pact->name() ))
// ...
}
这本书似乎非常不清楚,代码不完整。 需要对构造函数有一个很好的解释。请澄清。
【问题讨论】:
标签: c++ default-arguments