C++Builder Learn to use Deleted Implicitly-Declared Default Constructor

FireWind

Свой
Регистрация
2 Дек 2005
Сообщения
1,957
Реакции
1,203
Credits
4,034
Learn to use Deleted Implicitly-Declared Default Constructor
By Yilmaz Yoru June 20, 2021

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.
C++:
class myclass
{         
  public:   
    myclass()
    {
       std::cout << "myclass is constructed!\n";
    };
};
There are different contractor types and the Default Constructor in classes is one of these. This method not only used in classes but also used with struct and union data types Do you want to learn what is default constructor or what kind of methods we have that we can declare and use default constructors? In this post, we will try to explain the Default Constructor with examples.

A Default Constructor is a constructor type in Classes that is called when class is defined with no arguments, or it is defined with an empty parameter list, or with default arguments provided for every parameter. A type with a public default constructor is Default Constructible; There are different methods to use this Default Constructor and one of these is using a Deleted Implicitly-Declared Default Constructor. If you are looking for how do we use Deleted Implicitly-Declared Default Constructor implicitly, here are details.

Deleted Implicitly-Declared Default Constructor​

In C++ programming, If there is a declared default constructor, we can force the automatic generation of a default constructor in a new class by the compiler that would be implicitly declared otherwise with the keyword default. If we don’t define a constructor in a class and the implicitly-declared default constructor is not trivial, we can inhibit the automatic generation of an implicitly-defined default constructor by the compiler with the keyword delete.

Here is an Implicitly-Declared Default Constructor example that gives Error,
C++:
#include <iostream>
 
class my_class
{
  public:
 int start;
 my_class() = delete;
 /*
 {
    start=100;
 };   */
};
 
class my_other_class : public my_class
{
 public:
 //   my_class() = delete;
 //  my_class::my_class() = delete;  // implicitly declared default constructor copied from the my_class
};
 
int main()
{
 // Line below has Error: call to implicitly-deleted default constructor of 'my_other_class'
 my_other_class test;    // This class has Deleted Implicitly-Declared Default Constructor and
 
 std::cout << test.start ;  // Let's check if it worked same as the previously decleared one
 
 getchar();
 return 0;
}
We have error because it is deleted.