Rende la funzione virtuale pura anziché virtuale.
Nessuna implementazione viene fornita per impostazione predefinita e l'intento è che l'implementazione della funzione deve essere specificata da una classe ereditaria. Questo può essere annullato comunque.
A volte si vedono classi complete in cui tutte le funzioni membro vengono specificate come virtuali allo stato puro in questo modo.
Queste sono classi base astratte, a volte denominate classi di interfaccia e il progettista dell'ABC sta dicendo a te: "Ora ho idea di come questa funzionalità possa essere implementata per tutte le specializzazioni di questa classe base. deve avere tutti questi elementi definiti affinché la tua specializzazione funzioni e tu sai come dovrebbe comportarsi il tuo oggetto ".
Modifica: Oops, abbiamo appena notato che la funzione virtuale pura del membro è privata. (Grazie Michael) Cambia leggermente le cose.
Quando questa classe base viene ereditata utilizzando l'ereditarietà privata, le cose cambiano. Fondamentalmente ciò che sta facendo il progettista della classe base è che, quando la classe derivata chiama una funzione non privata nella classe base. parte del comportamento è stata delegata alla specializzazione della funzione nella classe derivata. Il membro non privato sta facendo "qualcosa" e parte di quel "qualcosa" è una chiamata, tramite la pura funzione della classe base virtuale, alla tua implementazione.
Quindi alcune funzioni pubbliche in Foo chiamano la funzione Barra all'interno di Foo, e si basa sul fatto che fornirai un'implementazione specializzata della funzione Bar per il tuo caso particolare.
Scott Meyers definisce "implementato in termini di".
BTW Solo ridacchiando sul numero di risposte che sono state rapidamente eliminate da persone che non hanno visto la "stampa fine" nella domanda! (-:.
HTH
applausi,
fonte
2009-07-15 20:52:39
Mi dispiace, quale parte ti confonde esattamente? – drxzcl
La parte "privata". – liori
Non so se la gente sta inviando il commento precedente perché suona comico o perché sono anche confusi ... –