Constructors Destructors What is a Constructor A constructor
- Slides: 10
Constructors & Destructors
What is a Constructor? • A constructor is a member function of a class which initializes objects of a class. • In C++, Constructor is automatically called when object(instance of class) is created. • It is special member function of the class. How constructors are different from a normal member function? • • Constructor has same name as the class itself Constructors don’t have return type A constructor is automatically called when an object is created. If we do not specify a constructor, C++ compiler generates a default constructor for us (expects no parameters and has an empty body).
Types of Constructors? • Default Constructors: Default constructor is the constructor which doesn’t take any argument. It has no parameters. • Parameterized Constructors: It is possible to pass arguments to constructors. Typically, these arguments help initialize an object when it is created. To create a parameterized constructor, simply add parameters to it the way you would to any other function. When you define the constructor’s body, use the parameters to initialize the object. • Copy Constructor: A copy constructor is a member function which initializes an object using another object of the same class.
What is Destructor? • Destructor is a member function which destructs or deletes an object. When is destructor called? • The function ends. • The program ends. • A block containing local variables ends. A delete operator is called. How destructors are different from a normal member function? • Destructors have same name as the class preceded by a tilde (~). • Destructors don’t take any argument and don’t return anything(not even void).
Can there be more than one destructor in a class? • No, there can only one destructor in a class with classname preceded by ~, no parameters and no return type. When do we need to write a user-defined destructor? If we do not write our own destructor in class, compiler creates a default destructor for us. The default destructor works fine unless we have dynamically allocated memory or pointer in class. When a class contains a pointer to memory allocated in class, we should write a destructor to release memory before the class instance is destroyed. This must be done to avoid memory leak
Default 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <iostream> #include <cstring> using namespace std; class Cube { int side; public: Cube() { cout<<"Constructor Called"; } }; int main() { Cube c; } • Output Constructor Called
Parameterized Constructor 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <iostream> #include <cstring> using namespace std; class Cube { private: int side; public: Cube(int x) { side=x; } int get. Data() { return side; } }; int main() { Cube c 1(10); Cube c 2(20); Cube c 3(30); cout << c 1. get. Data()<<endl; cout << c 2. get. Data()<<endl; cout << c 3. get. Data()<<endl; } Output: 10 20 30
Copy Constructor #include <iostream> #include <cstring> using namespace std; class Cube { public: int side; Public: Cube(Cube &obj) {side = obj. x; } }; int main() { Cube c 1; c 1. side=5; Cube c 2(c 1); cout << c 2. side<<endl; Output 5
#include <iostream> #include <cstring> using namespace std; class Cube { private: int side; public: Cube() { side=1; } Cube(int x) { side=x; } Cube(Cube &obj) {side = obj. x; } int get. Data() { return side; } }; int main() { Cube c 1(); Cube c 2(20); Cube c 3(30); cout << c 1. get. Data()<<endl; cout << c 2. get. Data()<<endl; cout << c 3. get. Data()<<endl; Cube c 4(c 2); cout << c 4. get. Data()<<endl; } Output 1 20 30 20
Destructor #include <iostream> #include <cstring> using namespace std; class Cube { int side; public: ~Cube() { cout<<"Destructor Called"; } }; int main() { Cube c; } Output Destructor Called
- Constructors and destructors in c
- Constructor java
- Considerate constructors scoring matrix
- Considerate constructors best practice hub
- Overloading methods and constructors in java
- The destructors by graham greene
- Slope field constructor
- Characteristics of constructor
- Phpunit mocking static methods
- Type of inheritance
- Copy