Concepts of Constructors and Destructors in C++
A destructor in C++, as the name implies, is used to destroy the objects that have been created by a constructor. Like a constructor, the destructor in C++ is a member function whose name is the same as the class name but is preceded by a tilde (~). For example, the destructor for the class integer can be defined as shown below: ~integer() { } A destructor in C++ never takes any arguments nor does it return any value. It will be invoked implicitly by the compiler upon exit from the program (or the block or the function as the case may be) to clean up the storage that is no longer accessible. It is a good practice to declare destructors in a program since it releases memory space for future use. Whenever new is used to allocate memory in the constructors, we should use delete to free that memory....
It is possible in C++ to define constructors with default arguments. For example, the constructor integer(), defined in the previous section (Constructors in C++), can be defined as follows: integer(int x, int y = 3); The default value of the argument y is 3. Thus, the statement: integer a(1); assigns the value 1 to x variable and 3 to y (by default). However, the statement: integer a(1, 5); assigns 1 to x and 5 to y. The actual parameters, when specified, overrides the default value. Note: The missing arguments must be the trailing ones.
The constructor integer(), defined in the previous section (Constructors in C++), initializes the data members of all the objects to zero. However, in practice it may be necessary to initialize the various data elements of different objects with different values when the are created. C++ permits us to achieve this objective by passing arguments to the constructor function when the objects are created. The constructors that can take the arguments are called parameterized constructors. The constructor integer() may be modified to take arguments as shown below: class integer { private: int m, n; public: integer(int x, int y); //parameterized constructor … … }; integer :: integer(int x, int y) { m = x; n = y; } When a constructor has been parameterized, the object declaration statement such as: integer in1; may not work. We must pass the initial values as arguments to the constructor function when an object is...
A constructor in C++ is a special member function whose task is to initialize the objects of its class. It is special because its name is the same as the class name. The constructor is invoked whenever an object of its associated class is created. It is called constructor because it constructs the values of data members of the class. A constructor is declared and defined as follows: class integer //class with a constructor { private: int m, n; public: integer(); //constructor declared … … }; integer :: integer() //constructor defined { m = 0; n = 0; } When a class contains a constructor like the one defined above, it is guaranteed that an object created by the class will be initialized automatically. For example, the declaration: integer in1; //object in1 created not only creates the object in1 of type integer but also initializes its data members m and...
We have seen, so far, a few examples of classes being implemented. In all the cases, we have used member functions such as getdata() and setvalue() to provide initial values to the private member variables. For example, the following statement: X.input(); invokes the member function input(), which assigns initial values to the data items of the object X. Similarly, the statement: A.getdata(100,299.95); passes the initial values as arguments to the function getdata(), where these values are assigned to the private variables of object A. All these ‘function call’ statements are used with the appropriate objects that have already been created. These functions cannot be used to initialise the member variables at the time of creation of their objects. This means that we are not able to initialize a class type variable (object) when it is declared, much the same way as initialization of an ordinary variable. For example: int p...