zoukankan      html  css  js  c++  java
  • C++ 成员对象和封闭类

    成员对象:一个类的成员变量是另一个类的对象
    包含成员对象的类叫封闭类 (Enclosing)
    如下代码:

    class CTyre {
    private:
        int radius;
        int width;
    
    public:
        CTyre(int r, int w):radius(r), width(w) {} // init list
    };  
    
    class CEngine {
        
    };
    
    class CCar { // 汽车类 -> 封闭类
    private:
        int price;
        CTyre tyre;
        CEngine engine;
    
    public:
        CCar(int p, int tr, int tw);
    };
    
    CCar::Ccar(int p, int tr, int tw):price(p), tyre(tr, tw) {}
    
    int main()
    {
        CCar car(20000, 17, 225);
    
        return 0;
    }

    如果 CCar 类不定义构造函数,则 CCar car;  将出现编译错误
    编译器不知道 car.tyre 该如何初始化
     car.engine 初始化没有问题,用默认构造函数

    生成封闭类对象的语句 -> 明确“对象中的成员对象”-> 如何初始化

    定义封闭类的构造函数时,添加初始化列表:
    类名::构造函数(参数表):成员变量1(参数表), 成员变量2(参数表), ...
    {
        ...
    }

    调用顺序
    当封闭类对象生成时,
    第一步:执行所有成员对象的构造函数
    第二步:执行封闭类的构造函数

    成员对象的构造函数调用顺序
    1.和成员对象在类中的说明顺序一致
    2.与在成员初始化列表中出现的顺序无关

    当封闭类的对象消亡时,
    第一步:先执行封闭类的析构函数
    第二步:执行成员对象的析构函数

  • 相关阅读:
    高手详解SQL性能优化十条经验
    大并发大数量中的MYSQL瓶颈与NOSQL介绍
    数据库索引的作用和优点缺点
    数据库优化方法整理
    Java中Date和Calender类的使用方法
    常用正则表达式大全 (转)
    java 反射的实例
    JAVA路径问题
    jsp ${param.id}用法
    jsp base标签与meta标签学习小结
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4272034.html
Copyright © 2011-2022 走看看