Как сделать так, чтобы защищенный член класса не всегда был равен значению, присвоенному в конструкторе и его можно было поменять
При любой попытки изменения surname всё равно будет выводить данные из конструктора, как это исправить?
#include <iostream>
#include <string>
using namespace std;
class Person
{
protected:
string snils, surname, name, patr, gender, birthday;
public:
Person()
{
surname = "Nulikov";
name = "Rafik";
patr = "Ivanovich";
gender = "M";
birthday = "05.05.2003";
}
void changeName()
{
cin >> surname;
}
virtual void getInfo()
{
}
};
class GetSurnameNP : public Person
{
void getInfo() override
{
cout << surname << " " << name << " " << patr << " " << endl;
}
};
class GetSNP : public Person
{
void getInfo() override
{
cout << surname[0] << name[0] << patr[0];
}
};
int main()
{
setlocale(LC_ALL, "ru");
Person info;
GetSurnameNP surnameNP;
Person* someinfo1 = &surnameNP;
info.changeName();
someinfo1->getInfo();
GetSNP SNP;
Person* someinfo2 = &SNP;
someinfo2->getInfo();
}