jeudi 9 mars 2017

C++11 usage of delete specifier vs private functions

I am in the process of boning up on my C++ (as in, attempting to get into more modern-style coding) and am looking at the delete specifier. It is my understanding that it is used to make sure that certain functionality cannot be defined or called. If I understand it correctly, this is primarily within the domain of assignment and copy. I am not quite sure what the difference is between using the delete specifier and just making those functions private.

For instance, what is the difference between:

 class Foo {
 private:
      Foo& operator(const Foo&);
      Foo(const Foo&);     
 };

And

 class Bar {
 public:
      Bar& operator(const Bar&) = delete;
      Bar(const Bar&) = delete;
 };

In other words: what does using the delete specifier gain? Is it just to make things look nicer?

Aucun commentaire:

Enregistrer un commentaire