美文网首页C++
C++——成员对象和封闭类

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

作者: d16ug_a1l | 来源:发表于2018-12-25 00:17 被阅读31次

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

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

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

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

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

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

    封闭类构造函数实例。

    // 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

    相关文章

      网友评论

        本文标题:C++——成员对象和封闭类

        本文链接:https://www.haomeiwen.com/subject/orfxlqtx.html