C ++内部原理?
在这里,我们将看到Class内部。在此之前,我们将看到与内部相关的Default构造函数。默认构造函数是一个不带任何参数的构造函数(由用户或编译器定义)。现在的问题来了,为什么要使用默认构造函数?
如果未提供默认构造函数,则编译器将隐式声明默认构造函数。默认构造函数用于初始化某些类的内部。它不会影响类的数据成员。编译器会在某些不同情况下插入默认构造函数。假设一个类是从具有默认构造函数的另一个类派生的,或者是一个包含具有其他默认构造函数的类的对象的类。编译器插入代码以调用基类或放置在当前对象内的对象的默认构造函数。
让我们看一个代码来了解这个想法。
示例
#include<iostream> using namespace std; class Base { public: // compiler will create one constructor for the class "Base" }; class ClassA { public: ClassA(){ cout << "ClassA Constructor defined by user" << endl; } int x; //it will not be initialized }; class ClassB : public ClassA { //编译器将创建ClassB构造函数并添加一些代码以进行调用 ClassA constructor }; class ClassC : public ClassA { public: ClassC() { //user defined consturctor, but compiler will add code to call A constructor cout << "User defined ClassC Constructor" << endl; } }; class ClassD { public: ClassD(){ //用户定义的默认构造函数。编译器将添加 code to call object of ClassA cout << "User-defined consturctor for ClassD Constructor" << endl; } private: ClassA obj; }; int main() { Base baseObj; ClassB b; ClassC c; ClassD d; }
输出结果
ClassA Constructor defined by user ClassA Constructor defined by user User defined ClassC Constructor ClassA Constructor defined by user User-defined consturctor for ClassD Constructor