美文网首页
面向对象(C++) 之 封闭类

面向对象(C++) 之 封闭类

作者: commandLDQ | 来源:发表于2016-10-20 11:02 被阅读0次

    ★封闭类:包含成员对象的类

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

    ●调用顺序
    当封闭类对象生成的时候,
    s1:执行所有成员对象的构造函数
    s2:执行封闭类的构造函数

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

    ●当封闭类的对象消亡时,
    s1:先执行封闭类的析构函数
    s2:执行成员对象的析构函数

    规范:
    1、出现成员对象时,该类的构造函数要包含对成员的初始化。如果构造函数的成员初始化列表没有对成员对象初始化时,则使用成员对象的缺省构造函数。
    2、建立一个类的对象时,应先调用其构造函数。但是如果这个类有成员对象,则要先执行成员对象自己所属类的构造函数,当全部成员对象都执行了自身类的构造函数后,再执行当前类的构造函数。

    以下是实例:

    #include<iostream>
    
    using std::cout;
    
    using std::cin;
    
    using std::endl;
    
    class CTyre{
    
      private:
    
        int radius;
    
        int width;
    
      public:
    
        CTyre(int r,int w):radius(r),width(w){};
    
        CTyre(){ cout<<"CTyre contructor"<<endl;
    
        ~CTyre(){ cout<<"CTyre destructor"<<endl;
    
    };
    
    
    
    class CEngine{
    
      public:
    
        CEngine(){ cout<<"CEngine contructor"<<endl;
    
        ~CEngine(){ cout<<"CEngine destructor"<<endl;
    
    };
    
    class CCar{
    
      // 这个类就是所谓的封闭类
      //其中包括成员对象CEngine和CTyre
    
      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(){
    
          int p,tr,tw;
    
      cout<<"请输入汽车的价格:"<<endl
    
      cin>>p;
    
      cout<<"请输入汽车轮胎的半径:"<<endl;
    
      cin>>tr;
    
      cout<<"请输入汽车轮胎的厚度:"<<endl;
    
      sin>>tw;
    
    CCar(p,tr,tw);
    
    return 0;
    
    }
    
    作者:华中师范大学 计算机学院 蒲东齐
    文本作者才疏学浅,如有错误,请指正!
    

    相关文章

      网友评论

          本文标题:面向对象(C++) 之 封闭类

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