Il est de Wikipédia, si notre compilateur ne prend pas en charge C++ 11, nous pouvons mettre en œuvre un par nous-mêmes, comme ci-dessous:Personnalisé "nullptr", mais comment comprendre les codes?
const class nullptr_t
{
public:
template<class T>
inline operator T*() const
{ return 0; }
template<class C, class T>
inline operator T C::*() const
{ return 0; }
private:
void operator&() const;
} nullptr = {};
Je ne comprends pas les codes ci-dessus.
mise à jour ---------------------- ------------------
Désolé , je ne l'ai pas exprimé clairement.
template<class T>
inline operator T*() const
{ return 0; }
template<class C, class T>
inline operator T C::*() const
{ return 0; }
Les codes ci-dessus, je ne comprends pas la grammaire. Je ne vois jamais ce genre de modèle de formulaire avant. (Comme « opérateur TC :: *() »)
Quelle partie ne comprenez-vous pas? –
Le code définit une variable 'const' nommée' nullptr' de type 'nullptr_t'. Les 2 opérateurs de conversion implicites permettent à 'nullptr' d'être utilisable partout où un pointeur peut être utilisé. –