class Date {
public:
int year;
int month;
int day;
public:
Date(int year, int month, int day)
{
cout << "Year " << year << " " << "Month " << month << " " << "Day " << day << endl;
}
};
class Person : public Date {
public:
string name;
string surname;
public:
Person(int year, int month, int day, string name, string surname) : Date(year, month, day)
{
cout << "Birthday"<< year << "." << month << "." << day << "." << endl;
cout << "Name"<< name << "," << "Surname" << surname << endl;
}
};
При создании Обьекта типа Person
int main (){
Person obj2(2017, 23, 9, "Marina", "Said");
return 0;
}
СОздается еще и обьект типа Date
Year 2017 Month 23 Day 9
Birthday2017.23.9.
NameMarina,SurnameSaid
**
Как сделать так что бы при создании обьекта типа Person не вылазил еще в придачу обьект типа Date
Не хотите тянуть за Person объект Date - уберите наследование, другого пути нет.
При вызове конструктора класса потомка вызываются конструкторы всех его предков.
Объект будет "вылазить", т.е. будет создаваться в любом случае - что при наследовании, что при композиции...
Вам уже говорили, что вы нарушаете сам принцип. Но если ваше наследование вам так дорого...
Вас же на самом деле раздражает не создание объекта - а вывод на экран. Ну отключите его. Вообще выбросьте.
Или добавьте лишний параметр в конструктор - выводить или нет:
Date(int year, int month, int day, bool out = true)
{
if (out) cout << "Year " << year << " " << "Month " << month
<< " " << "Day " << day << endl;
}
...
Person(int year, int month, int day, string name, string surname)
: Date(year, month, day, false)
{
Или сделайте еще один конструктор - скажем, по умолчанию (кстати, зачем вы сделали все члены Date открытыми?) - и руками работайте:
Date():yaer(0),month(0),day(0)
{
}
...
Person(int year, int month, int day, string name, string surname)
{
this->year = year;
this->month = month;
...
Все равно после наследования от Date от любой затычки хуже чем есть, уже не будет...
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости