2014-11-21 3 views
0

Так у меня есть конструктор в классе LimitedBankAccount и имеет класс наследует BankAccount (Короче конструктор вызывающего к другому конструктору).Наследование между конструкторами [Закрыть]

BankAccount::BankAccount(std::string name) 
{ 
    _name = name; 
    _balance = 0; 
} 

LimitedBankAccount::LimitedBankAccount(double limit) : BankAccount(_name) 
{ 
    _limit = limit; 
} 

Так что мой вопрос заключается в следующем: Как вызвать конструктор LimitedBankAccount так, что имя в BankAccount будет LimitedBankAccount, а также сохранить оба вместе.

Спасибо за помощь

ответ

0

Вы хотите, чтобы ваш LimitedBankAccount конструктор включить параметр имени, а также:

// Note that you can use an initializer list to set your member variables 
BankAccount::BankAccount(std::string name) 
: _name(name), _balance(0) 
{ } 

LimitedBankAccount::LimitedBankAccount(std::string name, double limit) 
: BankAccount(name), _limit(limit) 
{ } 
1
LimitedBankAccount::LimitedBankAccount(double limit, string name) : BankAccount(name) 
{ 
    _limit = limit; 
} 
+0

Если я теперь распечатать данные на связанный список LimitedBankAccount я получить имена из BankAccount? –

+0

да, попробуйте и посмотрите :) – pm100

0

Вы должны предоставить «имя» аргумент в производном конструктора , слишком. Лучше всего, чтобы писать списки инициализатора:

BankAccount::BankAccount(std::string name) 
: _name(std::move(name)) 
, _balance() 
{ } 

LimitedBankAccount::LimitedBankAccount(double limit, std::string name) 
: BankAccount(std::move(name)) 
, _limit(limit) 
{ } 

Использование:

LimiteBankAccount account(100.0, "Jane Doe");