C++——成员对象和封闭类

有其他类的对象作为 成员对象的类叫封闭类。

任何生成封闭类对象的语句,都要让编译器明白,对象中的成员对象,是如何初始化的。

具体做法是通过封闭类的构造函数的初始化列表。


封闭类对象生成时,先执行所有对象成员的构造函数,然后才执行封闭类的构造函数。


对象成员的构造函数调用次序和对象成员在类中的说明次序一致,与它们在成员初始化列表中的出现次序无关。


当封闭类对象消亡时,先执行封闭类的析构函数,然后再执行成员对象的析构函数。次序和构造函数的调用顺序相反。其原因是如果封闭类带的析构函数中使用到了成员对象的内容,那么先执行成员对象的析构函数,就可能会导致封闭类的析构函数在执行时发生不可预估的错误。


封闭类构造函数实例。



// ConsoleApplication3.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

//

#include "pch.h"

#include <iostream>

class Lun_zi

{

public:

Lun_zi(int k,int z);

~Lun_zi();


private:

int kuan;

int zhijing;


};


Lun_zi::Lun_zi(int k,int z)

{

kuan = k;

zhijing = z;

std::cout << "轮子1" << std::endl;

}


Lun_zi::~Lun_zi()

{

std::cout << "轮子2" << std::endl;

}

class yin_qing

{

public:

yin_qing();

~yin_qing();


private:


};


yin_qing::yin_qing()

{

std::cout << "引擎1" << std::endl;

}


yin_qing::~yin_qing()

{

std::cout << "引擎2" << std::endl;

}

class CAR

{

public:

CAR(int money,int k,int z);

~CAR();


private:

Lun_zi l_z;

yin_qing y_q;

int jia_ge;


};


CAR::CAR(int money, int k, int z):l_z

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容