Bootstrap

C++ 类对象的构造过程

在C++中构造一个类对象的时候, 编译器会首先为该类对象分配存储空间然后调用该类的构造函数。下面我们看一个例子:

#include <stdio.h>

class BaseA
{
public:
	BaseA()
	{
		printf("Call BaseA NoParamConstructor!\n");
	}

	BaseA(const BaseA& baseA)
	{
		printf("Call BaseA CopyConstructor!\n");
	}

	BaseA& operator= (const BaseA& baseA)
	{
		printf("Call BaseA Assign Operator!\n");
	}

	~BaseA()
	{
		printf("Call BaseA Destructor!\n");
	}
private:
	int baseI;
	double baseD;
};

class BaseB
{
public:
	BaseB()
	{
		printf("Call BaseB NoParamConstructor!\n");
	}

	BaseB(const BaseB& baseB)
	{
		printf("Call BaseB CopyConstructor!\n");
	}

	BaseB& operator= (const BaseB& baseB)
	{
		printf("Call BaseB Assign Operator!\n");
	}

	~BaseB()
	{
		printf("Call BaseB Destructor!\n");
	}

private:
	int baseI;
	double baseD;
};

class BaseC
{
public:
	BaseC()
	{
		printf("Call BaseC
;