Pour interdire la copie ou l'affectation d'une classe, il est courant de rendre le constructeur de copie et l'opérateur d'affectation privés. Google et Qt ont tous deux des macros pour rendre cela facile et visible. Ces macros sont :
Google :
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \
void operator=(const TypeName&)
Qt :
#define Q__DISABLE_COPY(Class) \
Class(const Class &); \
Class &operator=(const Class &);
Questions : Pourquoi les signatures des deux opérateurs d'affectation sont-elles différentes ? Il semble que la version Qt soit correcte. Quelle est la différence pratique entre les deux ?
3 votes
Une autre différence très mineure est que l'adaptation de Qt se termine par un point-virgule.