Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

How to use = delete in C++ to prevent copying class objects

Shulou Source: shulou.com Published: 2022-06-02 05:54:26 09月29日 Update

This article will explain in detail how to use = delete to prevent copy objects in C++. The content of the article is of high quality, so the editor shares it for you as a reference. I hope you will have some understanding of the relevant knowledge after reading this article.

An example of a singleton pattern

For example, in the Singleton design pattern, you want the objects of the class to be available only through getInstance static methods. Before the release of Category 11, classes were implemented by privatizing their copy constructors and assignment operators.

Look at the code first.

CreateInstance and deleteInstance are the means that the Singleton class provides for users to access the only objects of this class. To prevent users from creating or copying objects separately, the code declares constructors, destructors, copy constructors, and assignment operators as private.

Also, copy constructors and assignment operators are declared undefined, which ensures that even Singleton itself, or friend functions, cannot get a copy of Singleton. But there is a slight flaw in this method: even if the test method in the code uses a copy constructor, there will be no link errors as long as the test method is not actually called.

New practices in the new standard

Caching 11 adds the = delete modifier to make it clear that although certain functions are declared, they are prohibited from being used. The copy constructor and assignment operator in this example can be declared as follows:

So much for sharing about how to use = delete to prevent copy class objects in C++. I hope the above can be helpful and learn more. If you think the article is good, you can share it for more people to see.

Tags: Functions copies objects methods operators operations code shellfish caching content users articles more patterns knowledge articles private good lieutenant general examples Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Shulou Tech Info vpn MySQL Microsoft Xiaomi