关于构造函数的调用顺序:
1、继承关系
2、从属关系
3、static声明的从属关系
关于拷贝构造函数的声明:
classname(const classname & rhs)
#include <iostream>
using namespace std;
class Component
{
public:
Component()
{
cout << "Component" << endl;
}
// 拷贝构造函数的定义。去掉&编译只是,由于传值型传參是调用拷贝构造,而拷贝构造并未定义好
Component(const Component& rhs)
{}
};
class Host
{
private:
Component a;
public:
static Component sa; // static型成员属性。仅包括声明时不会调用构造函数
public:
Host()
{
cout << "Host" << endl;
}
};
Component Host::sa; // 包括此句时,此处才是定义。才会调用构造函数,并且先于main函数就已经调用构造函数。
void main()
{
Host obj;
}
打印结果:
Component
Component
Host
第一次Component是static的构造