Created
February 14, 2020 16:00
-
-
Save ChlorUpload/d38b7acad5acd81e54140c35f7c81d8b to your computer and use it in GitHub Desktop.
Constructor / Destructor Study
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define DEFAULT_CONSTRUCTOR_EXISTS | |
//#define COPY_CONSTRUCTOR_EXISTS | |
//#define ASSIGN_OPERATOR_EXITS | |
#include <iostream> | |
using namespace std; | |
class Parent | |
{ | |
public: | |
Parent() | |
{ | |
cout << "Parent - Default Constructor" << endl; | |
} | |
Parent(Parent const& obj) | |
{ | |
cout << "Parent - Copy Constructor" << endl; | |
} | |
Parent& operator =(Parent& obj) | |
{ | |
cout << "Parent - Assign Operator" << endl; | |
return *this; | |
} | |
int pValue; | |
}; | |
class Member | |
{ | |
public: | |
Member() | |
{ | |
cout << "Member - Default Constructor" << endl; | |
} | |
Member(Member const& obj) | |
{ | |
cout << "Member - Copy Constructor" << endl; | |
} | |
Member& operator =(Member& obj) | |
{ | |
cout << "Member - Assign Operator" << endl; | |
return *this; | |
} | |
int mValue; | |
}; | |
class Child : public Parent | |
{ | |
public: | |
#ifdef DEFAULT_CONSTRUCTOR_EXISTS | |
Child() | |
{ | |
cout << "Child - Default Constructor" << endl; | |
} | |
#endif | |
#ifdef COPY_CONSTRUCTOR_EXISTS | |
Child(Child const& obj) | |
{ | |
cout << "Child - Copy Constructor" << endl; | |
} | |
#endif | |
#ifdef ASSIGN_OPERATOR_EXISTS | |
Child& operator =(Child& obj) | |
{ | |
cout << "Child - Assign Operator" << endl; | |
return *this; | |
} | |
#endif | |
int cValue; | |
char str[256]; | |
Member member; | |
Member arrMember[1][2]; | |
}; | |
int main(void) | |
{ | |
//Test Code | |
cout << "--- c1 ---" << endl; | |
Child c1; | |
c1.pValue = 1; | |
c1.cValue = 2; | |
c1.member.mValue = 3; | |
c1.arrMember[0][0].mValue = 4; | |
c1.arrMember[0][1].mValue = 5; | |
strcpy_s(c1.str, 256, "ABCDEFG"); | |
cout << "--- c2 ---" << endl; | |
Child c2(c1); | |
cout << "--- c3 ---" << endl; | |
Child c3 = c1; | |
cout << "--- c4 ---" << endl; | |
Child c4; | |
c4 = c1; | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<only DEFAULT_CONSTRUCTOR_EXISTS> | |
--- c1 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
--- c2 --- | |
Parent - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
--- c3 --- | |
Parent - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
--- c4 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
Parent - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
<only DEFAULT_CONSTRUCTOR_EXISTS, COPY_CONSTRUCTOR_EXISTS> | |
--- c1 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
--- c2 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Copy Constructor | |
--- c3 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Copy Constructor | |
--- c4 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
Parent - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
<only DEFAULT_CONSTRUCTOR_EXISTS, ASSIGN OPERATOR_EXISTS> | |
--- c1 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
--- c2 --- | |
Parent - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
--- c3 --- | |
Parent - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
Member - Copy Constructor | |
--- c4 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
Parent - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
<all defines exist> | |
--- c1 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
--- c2 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Copy Constructor | |
--- c3 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Copy Constructor | |
--- c4 --- | |
Parent - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Member - Default Constructor | |
Child - Default Constructor | |
Parent - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator | |
Member - Assign Operator |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment