В книге C ++ Primer Стенли Б. Липпмана *, * Жозе Ладжой
в главе 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" );
Как это вызывает двухпараметрический конструктор, если он не был объявлен с одним аргументом ??
Account *pact = new Account( "Michael Lieberman", 5000 );
А как в приведенной выше строке вызывается конструктор с аргументами по умолчанию
if ( strcmp( acct.name(), pact->name() ))
// ...
}
В книге, кажется, совершенно неясной с неполными кодами.Нужно хорошее объяснение конструкторов.Пожалуйста, уточните.