class Osoba
{
private:
char* imie;
char* nazwisko;
int wiek;
}
...
int main()
{
char imie[10];
char nazwisko[15];
int wiek;
Twoje obiekty mają jako pola jedynie wskaźniki na `imie` i `nazwisko`. Jeśli zmienisz zawartość tablic przez `cin >> imie`, wszystkie obiekty które wskazują na tą zmienną (w Twoim przypadku, wszystkie) będą "miały" nową wartość.
Jeśli chcesz, żeby obiekt miał "własne" imię i nazwisko, możesz:
- (najbardziej c++owo) użyć std::string:
class Osoba
{
private:
std::string imie;
std::string nazwisko;
int wiek;
- wciąż używać wskażników, ale upewniać się że wskazują na "własny" bufor (ale to znacznie gorsze i bliższe C):
class Osoba
{
private:
char* imie;
char* nazwisko;
int wiek;
public:
Osoba(char* _imie, char* nazwisko, int wiek)
{
this->imie = new char[10];
strcpy(this->imie, _imie);
//...
}
~Osoba()
{
delete this->imie;
//...
}
- ew trzymać bufor w samym obiekcie (nawet w C dość rzadko używane):
class Osoba
{
private:
char imie[10];
char nazwisko[15];
int wiek;
public:
Osoba(char* _imie, char* nazwisko, int wiek)
{
strcpy(this->imie, _imie);
//...