C++ 内部机制?
本文将介绍类内部机制。在此之前,我们将介绍与内部机制相关的默认构造函数。所谓默认构造函数,就是不接受任何参数的构造函数(由用户或编译器定义)。现在我们不禁会问,为什么要使用默认构造函数?
如果未给出默认构造函数,编译器将隐式声明默认构造函数。默认构造函数用于初始化一些类内部。它不会影响类的成员数据。编译器在一些不同的情况下会插入默认构造函数。假如一个类派生自具有默认构造函数的另一类,或者一个类包含具有默认构造函数的某个其他类的对象。编译器会插入代码,以便为基类或当前对象中放置的对象调用默认构造函数。
让我们来看一个示例,以了解这一概念。
示例
#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 { //compiler will create ClassB constructor and add some code to call 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(){ // User defined default constructor. The compiler will add 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
广告