• C++类与对象(2)——类的组合


    当我们创建一个类时,我们总是习惯用C++的基本数据类型作为类的组成部件。但实际上类的成员数据既可以是基本类型也可以是自定义类型,当然也可以是类的对象。这就是类的组合,它描述的就是一个类内嵌其他类的对象作为成员的情况,它们之间的关系是一种包含于被包含的关系。

    当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建,

    组合构造函数定义的一般形式:

    类名::类名(形参表):内嵌对象1(形参表),内前对象2(形参表)......

    {类的初始化}

    其中“内嵌对象1(形参表),内前对象2(形参表)......”称为初始化列表,其作用是对内嵌对象进行初始化。

    例如

    //创建Point类
    class Point {
    public:
        Point(float xx,float yy) {
            x = xx;
            y = yy;
        }
        int getX() { return x; }
        int getY() { return y; }
    private:
        float x, y;
    };
    //创建Rectangle类,
    class Rectangle {
    public:
            //构造函数,将传入的形参xp1赋值给p1,xp2赋值给p2
        Rectangle(Point xp1,Point xp2):p1(xp1),p2(xp2){
    
        }
        void ZC() {
            float Chang;
            Chang = abs((p1.getX() - p2.getX()) + (p1.getY() - p2.getY())) * 2;
            cout << "The ZHOUCHANG of the rectangle is :" << Chang << endl;
        }
        void Area() {
            float Ar;
            Ar = abs(p1.getX() - p2.getX())*abs(p1.getY() - p2.getY());
            cout << "The Area of the rectangle is :" << Ar << endl;
        }
    
    private:
        Point p1, p2;
    };    

    在创建一个组合类对象时, 不仅它自身的构造函数的函数体将被执行,而且还将调用其内嵌对象的构造函数,调用顺序如下:

    (1)调用内嵌对象的构造函数,调用顺序按照内嵌对象在组合类的定义中出现的次序,注意:内前对象在构造函数的初始化列表中出现的顺序与内嵌对象构造函数的调用顺序无关。

    (2)执行本类构造函数的函数体。

  • 相关阅读:
    直方图有两种类别,等频直方图与等高直方图。
    yangtingkun常数复合索引应用案例
    Using Oracle 10g Tuning Utilities
    Oracle统计信息的备份还原
    ITPUB:分区表,每次查询取出1%的记录,为什么没有走索引?
    ITPUB: Newkid的两个NULL与索引的小技巧
    ORACLE全文检索文件路径版
    分区表、分区索引和全局索引部分总结
    Oracle 10g中的SQL跟踪新方法
    gsoap bug 小记
  • 原文地址:https://www.cnblogs.com/wobu/p/8902519.html
Copyright © 2020-2023  润新知