Ez szintaktikailag helytelen vagy nem engedi a fordító mert butaság amit csinálni akarok?
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?
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;
}
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!