C++:n vastine javan superille?

n000000000b

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???
}

7

596

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kaipaamasi miehen nimi?

      Ja maakunta tai kaupunki?
      Ikävä
      44
      7746
    2. Tulipalossa henkilövahinkoja, itsenäisyyspäivä alkoi huonosti, poliisi tiedottaa lisää

      Savonlinna https://www.como.fi/uutiset/savonlinna-henkilovahinkoja-tulipalossa-poliisi-tiedottaa-lisaa/
      Savonlinna
      70
      4576
    3. Oletko keskustellut kaivatustasi muiden

      Kanssa lähiaikoina? Jos, onko keskustelu ollut positiivista tai negatiivista? Vaikuttaako keskustelut mielipiteeseesi ka
      Ikävä
      59
      3849
    4. Ennen ei ollut persuja ja työttömyyttä, lääkäriinkin pääsi

      Ennen oli kaikilla töitä Kauppiaille kelpasi kun saivat voittoa Yritystukia ei ollut Lääkäriin pääsi kaikki haluklaat Nu
      Maailman menoa
      72
      3715
    5. Millaista läheisyyttä

      Toivoisit ikävästi kohteesi kanssa?
      Ikävä
      98
      3539
    6. 55
      3173
    7. Kyllä on Vasemmistoliitosta Koskelan johdolla tullut todellinen ääripuolue

      se on niin tulipunainen kuin olla voi, ja selvästi haluaa jatkuvasti eripuraa, ja repiä kansaa kahtia. Siinä on jo vuod
      Maailman menoa
      68
      3135
    8. Antifasismi - mitä se on?

      Se on äärivasemmistolaista anarkistista toimintaa joka käyttää fasisminvastaisuutta keppihevosena oikeuttaakseen toimint
      Maailman menoa
      30
      2548
    9. IL- KELA:n pääjohtaja, lääke- ja oikeustieteen tohtori Lasse Lehtonen sekavassa tilassa Brysselissä!

      "Iltalehden tietojen mukaan Lehtosen käytös Brysselin lentokentällä on herättänyt huomiota, ja hänen olemuksensa on tulk
      Maailman menoa
      211
      2172
    10. Heräsin taas ikävään

      Ja aivan valtavaan haluun. Tahdon sinua R. ❤️
      Ikävä
      52
      1668
    Aihe