Kezdőoldal » Számítástechnika » Programozás » Ez szintaktikailag helytelen...

Ez szintaktikailag helytelen vagy nem engedi a fordító mert butaság amit csinálni akarok?

Figyelt kérdés

Egy bázisosztályban létrehozok publikusként egy metódust és ezt felülírom egy származtatott osztályban de privátként.


Ez amúgy lefordulna ugye?Csak a fordító nem engedi.

De ebben az esetben a származtatott osztályban felülírt függvény nem fog látszani a további származtatásokban.


Ugye jól mondtam mindent?


2012. okt. 10. 00:19
 1/4 anonim ***** válasza:

Legegyszerűbb módja az lett volna ha konkrétan bepötyögöd ami érdekel és lefordítod, de most leszek szíves nem ennyivel lezárni a válaszom.


Ha a származtatott osztályod privát metódusát megpróbálod nem osztályon belülről elérni, akkor már ezért önmagában nem fog lefordulni, tök mindegy hogy örökli-e a függvényt és azt valósítod meg újra/külön függvény/azonos függvény.

Röviden: Meglehet csinálni hogy a bázisosztályban lévő publikus funkciót letiltod, ha ugyanazon a néven a leszármazottba privátként szerepel.

Egyébként ez tök független a származtatástól. X osztály y metódusát meghívod, a láthatóságot meghatározza az amit elé írtál, tök mindegy hogy miből örököl, hisz van saját olyan nevű függvénye, lényegtelen hogy az ősosztálynak volt-e olyan...

Kedvedért ki is próbáltam:

#include <iostream>


using namespace std;


class A

{

public:virtual void a(){std::cout << "A.a";}

};


class B: public A

{

private:void a(){std::cout << "B.a";}

public:void b(){a();}

};


int main()

{

A a;B b;

a.a();

b.b();

b.a();//Ha ezt kiveszed fordul.

return 0;

}

2012. okt. 10. 01:45
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Előző válaszomhoz még annyit, hogy a letiltás nyilván csak a származtatott osztályra lesz érvényes. Egyébként felhívnám a figyelmet a kérdés logikai bukfenceire:

"Ez amúgy lefordulna ugye?Csak a fordító nem engedi."

Két ellentétes állítás. Ha lefordult akkor a fordító engedte, ha a fordító nem engedte akkor nem fordult le.

A válasz pedig, igen nem fog látszani a származtatott osztályban de csak pusztán azért mert neki az a tagja privát.

Végül: Nem mondtál jól mindent.

2012. okt. 10. 01:51
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
nem nagyon értelek előző.
2012. okt. 10. 04:18
 4/4 A kérdező kommentje:
Már értelek adtam zöld kezet.
2012. okt. 10. 06:33

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!