Posso capire che potrebbe esserci un motivo per dichiarare una funzione virtuale implementata (al contrario di pura) privata o protetta. Afaik, se dichiari un metodo virtuale implementato come protetto, la tua classe figlia può chiamare il metodo della classe base (e nessun altro può farlo). Se lo dichiari privato, solo la classe base può chiamare l'implementazione predefinita del metodo virtuale.C'è qualche differenza tra una funzione virtuale pura protetta e privata?
Tuttavia, con i virtuali puri, non esiste un'implementazione di base ... Quindi non è funzionalmente equivalente dichiarare un puro virtuale come privato o protetto? Un virtual puro protetto non ha senso perché non puoi mai invocare il metodo corrispondente della classe base. Ci sono degli scenari in cui un virtual puro protetto ha senso?
Ci sono alcuni argomenti simili su SO, ma non sono riuscito a trovare nulla che rispondesse concisamente alla mia domanda.
È possibile implementare 'amico' per le interfacce. – Matthew
Il metodo virtuale puro può avere un corpo e può essere richiamato esplicitamente come base :: pippo(). – iammilind