注意“/数字”表示的是在创建时调用过程逻辑,“/*数字”程序调用的一个过程
#include <iostream>
using namespace std;
/**
* @brief The Value class
* 成为其他类的变量
*/
class Value
{
private:
string name;
public:
Value(string name):name(name)//4:对基类中的变量(基类中的变量进行一个初始化)
{
cout << name << "创建了" << endl;//*1:先打印创建的基类对象
}
~Value()
{
cout << name << "销毁了" << endl;//*6或者8:在各类中的析构函数调用完毕后对各类中的一个成员变量进行销毁
}
};
class Father
{
public:
static Value s_value; // 静态成员变量
Value value = Value("Father的成员变量");
Father()//3:通过派生类函数找到基类中的无参构造函数后,先对变量(类对象进行一个初始化)
{
cout << "Father类的构造函数" << endl;//*2:基类对象创建后在创建基类的构造函数
}
~Father()
{
cout << "Father类的析构函数" << endl;//等派生类中的成员变量销毁后在调用基类的一个析构函数
}
};
Value Father::s_value = Value("Father的静态成员变量");
class Son:public Father
{
public:
static Value s_value; // 静态成员变量
Value value = Value("Son的成员变量");//*3在创建派生类的一个成员变量
Son()//2:在主函数找到派生类的无参构造函数然后再去找基类中的无参构造函数
{
cout << "Son类的构造函数" << endl;//*4在创建派生类的一个构造函数
}
~Son()//*5在销毁时先调用派生类的一个析构函数
{
cout << "Son类的析构函数" << endl;
}
};
Value Son::s_value = Value("Son的静态成员变量");
int main()
{
cout << "主函数开始" << endl;
// 局部代码块
{
Son s;//1:创建一个派生类的一个无参构造函数去找派生类中的无参构造函数
}
cout << "主函数结束" << endl;
return 0;
}
在程序运行后所产生的结果