PDA

View Full Version : [c++] Metodi virtuali puri get


mistergks
12-07-2015, 06:52
In Una gerarchia di classi posso inserire una classe astratta che contiene metodi get e set tutti virtuali puri?
Cioè virtual =0 non definiti

Ha senso?
Nel caso, vanno inserite le variabili private nella classe astratta oppure vanno inserite nella classe che eredita la classe astratta?

WarDuck
12-07-2015, 09:33
In Una gerarchia di classi posso inserire una classe astratta che contiene metodi get e set tutti virtuali puri?
Cioè virtual =0 non definiti

Ha senso?


In C++ una classe si definisce astratta se ha almeno 1 metodo virtuale puro.

In generale non puoi istanziare oggetti di una classe astratta.

È tuttavia possibile ereditare una classe astratta, estenderne l'interfaccia o implementare i metodi virtuali in maniera che diventi "concreta".

Avere tutti i metodi virtuali puri di fatto significa che la tua classe costituisce una interfaccia.

Ha perfettamente senso ;).


Nel caso, vanno inserite le variabili private nella classe astratta oppure vanno inserite nella classe che eredita la classe astratta?

Vedi sopra.

In linea di massima, dal mio punto di vista, se hai tutti metodi virtuali puri (classe interfaccia) non ha senso inserire una proprietà comune.

Ha senso farlo se hai almeno un metodo che lo usa (che non siano i semplici get/set).

Dopodiché dipende da caso a caso.

mistergks
12-07-2015, 17:08
E i metodi virtual get() = 0 possono essere const?
Cosi ad esempio:
virtual string getNome() const = 0