(en supposant que je ne peux pas utiliser boost::noncopyable
, qui a été explicitement prévu à cet effet)Quelle est la meilleure syntaxe pour déclarer une classe comme non recouvrable?
(en supposant que je ne peux pas utiliser C++ 11)
Lorsque vous faites une classe noncopyable, je vois habituellement la syntaxe suivante:
class MyClass
{
public:
...
stuff
...
private:
MyClass(const MyClass&); // disables the copy constructor
MyClass& operator=(const MyClass&); // disables the copy assignment operator
};
Cette syntaxe semble longue. Je pense que je peux utiliser ce qui suit à la place:
MyClass(MyClass&); // disables the copy constructor
void operator=(MyClass); // disables the copy assignment operator
Cela semble plus court (il répète le nom de la classe seulement 3 fois au lieu de 4 fois, il omet également const
et &
).
Est-ce que ma syntaxe fait exactement la même chose que l'autre syntaxe?
Y a-t-il une raison de préférer l'un à l'autre?