データ・メンバーとしてクラス・オブジェクト
1970 ワード
Father.h
Father.cpp
Mother.h
Mother.cpp
Main.cpp
Motherのコンストラクション関数を呼び出し、Fatherのコンストラクション関数を呼び出し、Fatherのコンストラクション関数を呼び出し、最後にMotherのコンストラクション関数を呼び出します.
X::X()が呼び出されると、オブジェクトメンバーがクラスで定義した順序で、それらのコンストラクション関数が順次呼び出され、Xのコンストラクション関数が最後に実行され、コンストラクション関数の呼び出しが逆になります.
#ifndef FATHER_H
#define FATHER_H
#include"Mother.h"
class Father
{
public:
Father(int a,int b);
~Father(void);
private:
Mother m;
int i;
};
#endif
Father.cpp
#include "Father.h"
#include<iostream>
using namespace std;
Father::Father(int a,int b):m(a,b),i(a)
{
cout<<"father constructed!"<<endl;
m.show();
cout<<"I:"<<i<<endl;
}
Father::~Father(void)
{
cout<<"father deconstructed!"<<endl;
}
Mother.h
#pragma once
class Mother
{
public:
Mother(int a,int b);
~Mother(void);
void show();
private:
int a;
int b;
};
Mother.cpp
#include "Mother.h"
#include<iostream>
using namespace std;
Mother::Mother(int a,int b)
{
this->a=a;
this->b=b;
cout<<"mother constructed!"<<endl;
}
Mother::~Mother(void)
{
cout<<"mother deconstructed!"<<endl;
}
void Mother::show()
{
cout<<"A:"<<a<<"B:"<<b<<endl;
}
Main.cpp
#include<iostream>
#include"Father.h"
using namespace std;
int main()
{
Father f(1,2);
return 0;
}
Motherのコンストラクション関数を呼び出し、Fatherのコンストラクション関数を呼び出し、Fatherのコンストラクション関数を呼び出し、最後にMotherのコンストラクション関数を呼び出します.
X::X()が呼び出されると、オブジェクトメンバーがクラスで定義した順序で、それらのコンストラクション関数が順次呼び出され、Xのコンストラクション関数が最後に実行され、コンストラクション関数の呼び出しが逆になります.