Цель
Попытка узнать разницу в поведении создания экземпляров объектов производного класса
Моя работа
- Создан класс "персона"
- В класс person добавлен виртуальный метод, который устанавливает значение переменной name
- Определен класс «employee», производный от базового класса «person»
- Добавлен метод к классу "employee", который устанавливает значение переменной name , изначально определенное в базовом классе, но добавляет после него суффикс "さ ん".
- Создал различные типы или инициации и проверил разницу между выходными данными
Определенные классы
Я создал базовый класс "person" и производный класс "employee", как показано ниже
человек
class person
{
protected:
string name;
public:
person();
~person();
virtual void setName(string myName)
{
name = myName;
}
};
сотрудник
class employee : public person
{
public:
employee();
~employee();
void setName(string myName)
{
name = myName+"さん";
}
};
Основной
int main()
{
person newPerson = person();
employee anotherPerson1 = employee();
employee* anotherPerson2 = new employee();
person extraPerson1 = employee();
person* extraPerson2 = new employee();
newPerson.setName("new");
anotherPerson1.setName("another1");
anotherPerson2->setName("another2");
extraPerson1.setName("extra1");
extraPerson2->setName("extra2");
cout << newPerson.getName() << endl;
cout << anotherPerson1.getName() << endl;
cout << anotherPerson2->getName() << endl;
cout << extraPerson1.getName() << endl;
cout << extraPerson2->getName();
}
Консольный вывод
new
another1さん
another2さん
extra1
extra2さん
Вопрос
Я понимаю поведение newPerson, anotherPerson1 и другихrPerson2.
Я не понимаю, почему extraPerson1 и extraPerson2 ведут себя по-разному, даже если оба имеют одинаковые инициации.
Пожалуйста, помогите!