"Lopullinen" versio aikaluokastamme voisikin siis olla seuraava:
class cAika { int h,m; public: virtual void aseta(int ih=0,int im=0, int is=0) {...} ... virtual void tulosta(int lf=1) const { ... } int hh() const { return h; } // saantimetodi int mm() const { return m; } // saantimetodi };Huomattakoon nyt, että perinnässä ei tarvitse määritellä uudestaan saantifunktioita hh() ja mm(), ainoastaan uudet, eli esimerkissämme ss().
Nyt voitaisiin esimerkiksi kutsua:
cout << a1.hh() << ":" << pAika->mm() << ":" << a4.ss() << endl;Mikä tässä sitten on erona attribuuttien julkaisemiseen verrattuna? Se että attribuutit ovat nyt tietyssä mielessä vain luettavissa (read-only), eli niitä voi lukea saantimetodien avuilla, mutta niitä voi asettaa vain aseta- metodin avulla, joka taas pystyy suorittamaan oikeellisuustarkistukset ja näin olion tila ei koskaan pääse muuttumaan olion itsensä siitä tietämättä.
Saantimetodit kannattaa ilman muuta kirjoittaa inline, sillä niistä kääntäjä voi sitten kääntää nopeaa koodia, eikä saantibyrokratiasta tule yhtään kustannuksia suoraan attribuuttiin viittaamiseen verrattuna.
Kannattaakin harkita, nimeäisikö attribuutit uudelleen: ah,am,as, jotta nimet h,m,s jäisi vapaaksi saantimetodeille! Toisaalta tärkeimmistä attribuuteista voisi tehdä myös pitkillä nimillä varustetut saantimetodit: esimerkiksi tunnit(), minuutit() ja sekunnit(). Rakkaalla lapsella voi olla montakin nimeä ja inlinen ansiosta tämähän ei "maksa mitään".