Mikä on C :n vastine javan super-sanalle, jolla kutsutaan aliluokan metodia?
void Class::test() // test on virtuaalinen ja overraidattu
{
super.test(); // kutsutaan alempaa metodia???
}
C++:n vastine javan superille?
7
591
Vastaukset
- a a
aliluokka::test()
- Ogma
Valitettavasti super-viittaukselle ei ole C :ssa automaattista vastinetta. Feikkaaminenkin on vaikeaa, koska super-muuttujan alustus automaattisesti on hankalaa, koska pitäisi tehdä this-muuttujan kastaus yliluokan tyyppiseksi eli CYliA *super = (CYliA*) this; // this:in tyyppi on peritty CYliA:sta.
Rakentajassa homma ei onnistu, koska this ei ole silloin vielä mitään. Toisaalta jos käyttää 2-portaista initialisointia, niin silloin jälkimmäisessä initialisointimetodissa voisi ko. kastauksen tehdä. Eli
A *a = new A(); // olion a muuttujat "nollataan" järkeviksi
a->init(); // tehdään jotain vähn monimutkaisempaa alustusta esim. yhteys tietokantaan tms.
Toistaalta mekanismi ei ole automaattinen joten siihen käytetty aika ei välttämättä ole homman väärti. Jos pitää kutsua yliluokan metodia, niin siinä kohtaa vain this-pointterin kastaus on ainoa keino.....- sd<zv
yläluokan metodin kutsuminen kuvatulla tavalla edustaa erittäin huonoa ohjelmointitapaa. parempi tapa on luoda toiminnan sisältävä suojattu virtuaalimetodi, joka ylimääritellään aliluokassa, ja tätä metodia kutsutaan julkisessa finaalissa metodissa.
- korvia myöten täynnä
sd<zv kirjoitti:
yläluokan metodin kutsuminen kuvatulla tavalla edustaa erittäin huonoa ohjelmointitapaa. parempi tapa on luoda toiminnan sisältävä suojattu virtuaalimetodi, joka ylimääritellään aliluokassa, ja tätä metodia kutsutaan julkisessa finaalissa metodissa.
takaisin nurkkaan häpeämään ja jätä ohjelmointi ammattilaisille jotka ei murehdi siitä mikä on hyvä ja mikä huono tapa kunhan ohjelma toimii niin kuin pitää!
- Ammattilainen
korvia myöten täynnä kirjoitti:
takaisin nurkkaan häpeämään ja jätä ohjelmointi ammattilaisille jotka ei murehdi siitä mikä on hyvä ja mikä huono tapa kunhan ohjelma toimii niin kuin pitää!
Jos tuollaista spagettikoodia tekee niin ylläpidettävyys on kyllä surkeaa. Ammattilaiset jotka isoissa firmoissa tekee softaa huomio sen, että seuraavassa julkaisussa uusia ominaisuuksia koodaa mitä ilmeisemmin aivan toinen heppu. wannabe ammattilaiset tekee spagettikoodia.
- dim java paskaa
Mitä ihmettä? Mihin tarviit jotain SUPER tai sen castausta?
class A{
private:
int intA;
protected:
public:
A(int joku_Aint){intA = joku_Aint;}
int getAint(){return intA;}
};
class B : public A{
private:
int joku_Bint
protected:
public:
//alustetaan se sun SUPER :A(jokuA)
B(int jokuA, int jokuB):A(jokuA){joku_Bint = jokuB;}
int getBint(){return intB;}
};
int main(){
B bluokka(10,5);
std::cout
- dim Java paskaa
Tutustu C perintään.
http://cpp.mureakuha.com/cppohje/cpp07.htm
Tossa mureakuhasta vähän osviittaa.
Hyvin samankaltaset ne on, mutta C :ssa monipuolisempi.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 2024248
SDP haluaa 40 000 nettomaahanmuuttajaa
SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah1463798Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen
No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat1363245Hienoa! Eduskunta luopui käteisen käytöstä
Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.471629Ikävä sinua mies
Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i191508Mikä tämä henkilö mahtaa touhuta Parkanossa
Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58341450Sulla on avaimet ja keinot
Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi251385Orpo loukkaantui fasismiin viittaavasta sanavalinnasta
Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk271351Kiinnostaa - ei kiinnosta - kiinnostaapas
Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt1161160Martina haluaa Marbellaan
Martinan tekisi mieli ottaa lennot Marbellaan, jossa näkisisi kauniita ja hyväntuulisia ihmisiä. No sitten pitää matkust2151063