C++ dziedziczenie

0
class A
{
public:

  void set(){
	this->pole="1";
  }
  char* get(){
	return this->pole;
  }

  A();
private:
   char* pole;


};

class B : public A
{
public:
  char* pole2 ;

 char* get(){

	return pole2;
}
    B();
};

B* klasa = new B();
klasa->set(); // pole = 1;
klasa->get() // zwraca 1. dlaczego? nie powinna zwrocic pola2, czyli jakiejs randomowej liczby?

CZy to wina kompilatora bo zauwazyle, ze cos nie do konca mu wychodzi interpretowanie kodu

0

Mi działa jak należy.

0

Czyli w set ustawia Ci pole z klasy A, a w get zwraca wartosc pola pole2 z klasy B?QTCreator cos szwankuje.

0

Tak, no pierwszeństwo raczej ma pole własne a nie bazy.

0

I tak to jest źle. Typ char ** nie służy do przechowywania ciągów znaków i było to wałkowane po milion razy już chyba na wszystkich forach.
Jeżeli chcesz mieć char
pole to musisz w konstruktorze zarezerwować dla niego miejsce lub porostu na szytwno wprowadzić char pole[128]

class A
{
public:
     void set() {     this->pole = "1"     }
     char* get() {     return pole;     }
private:
     char* pole;
     A() {     pole = new char[128];     }
     ~A() {     delete [] pole;     }
};

EDIT: poza tym jaki sens dziedziczyć w B z A skoro nie dziedziczy pola pole natomiast dziedziczy funkcje które mają określone działania do właśnie tego pola?

0

To byl tylko przykladowy program. Czytalem sobie na php o " late state bindnig" i chcialem sobie przypomniej jak to jest z c++ i tak powoli doszedlem do tego problemu. Wina oczywiscie stoi po stronie kompilatora, ktory juz wczoraj dal sie we znaki.

static* oczywiscie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1