C++C++11C++14C++17Introduction to C++Learn C++

Learn About Deleted Implicit Destructors in A C++ App

Learn About Deleted Implicitly Declared Destructor in A C++ App

Do you want to learn about deleted implicitly declared destructor in a C++ app? Do you know what kind of methods we have that we can declare and use to deleted implicitly-defined destructors? What is defaulted destructor? In this post, we will try to explain deleted implicitly declared destructors in Classes with given examples.

What does a Constructor mean in a C++ app?

The Constructor in C++ is a function, a method in the class, but it is a ‘special method’ that is automatically called when an object of a class is created. We don’t need to call this function. Whenever a new object of a class is created, the Constructor allows the class to initialize member variables or allocate storage. This is why the name Constructor is given to this special method. Here is a simple constructor class example below,

What does a Destructor mean in a C++ app?

The Destructor in classes (i.e class_name) is a special member function to delete objects, in other words it is called when the lifetime of an object ends. The purpose of the destructor is to do operations when destruct the object. The object may have acquired or allocated data on memory on runtime, they need to be freed too when objects are being deleted, destructor is the function that frees the resources of the object. When we construct an object, sometimes we need operations to deconstruct. Destructors are not only used in classes but also used with struct and union data types.

What is a deleted implicitly-declared destructor in C++?

The implicitly-declared or defaulted destructor for the class is a destructor method that it is defined as deleted since C++11. To say that is a Implicitly Declared Destructor, any of the following below should be maintained,

  • The class has a non-static data member that cannot be destructed
  • The class has direct or virtual base class that cannot be destructed
  • The class is a union and has a variant member with non-trivial destructor

also note that,

  • If the base class has a virtual destructor then implicitly-declared destructor is virtual
  • A defaulted prospective destructor for the class is defined as deleted if it is not the destructor for that class

According to open-std.org resource, any direct or virtual base class or non-static data member has a type with a destructor that is deleted or inaccessible from the defaulted default constructor or default constructor.

Here is an Implicitly-Declared Default Constructor example that gives an Error,

close

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.

About author

33+ years of coding with more than 30+ programming languages, mostly C++ on Windows, Android, Mac-OS, iOS, Linux and some other operating systems. Dr. Yilmaz Yoru was born in 1974, Eskisehir-Turkey. He graduated from the department of Mechanical Engineering of Eskisehir Osmangazi University in 1997. One year later he started to work in the same university as an assistant. He received his MSc and PhD degrees from the same department of the same university. He has married and he is a father of a son. Some of his interests are Programming, Thermodynamics, Fluid Mechanics and Artificial Intelligence. He also likes the graphical 2D & 3D design and high-end innovations.
Related posts
CC++C++17Introduction to C++Language FeatureLearn C++

What Is Count In C Programming?

CC++Introduction to C++Language FeatureLearn C++

Why Is C The Most Popular Programming Language?

CC++C++17Introduction to C++Learn C++Syntax

How To Use Switch In C++ And C Programming?

CC++C++17Introduction to C++Learn C++

What Are Header Files In C++ and C Programming?

Worth reading...
What Is The Implicit Destructor Created By The C++ Compiler?