美文网首页
[C++之旅] 14 对象成员与对象数组

[C++之旅] 14 对象成员与对象数组

作者: Onicc | 来源:发表于2018-11-24 23:06 被阅读0次

    [C++之旅] 14 对象成员与对象数组

    对象数组

    使用方式

    • 从栈中实例化对象数组

      类名 对象名[对象个数];
      对象名[需访问的第几个对象 - 1].成员/成员函数...
      

      对象数组中有n个对象则实例化时调用n次构造函数

    • 从堆中实例化对象数组

      类名 *对象名 = new 类名[对象个数];
      对象名[需访问的第几个对象 - 1].成员/成员函数...
      对象名->对象成员/成员函数...
      delete []对象名;
      对象名 = NULL;
      

      对象数组中有n个对象则实例化时调用n次构造函数,delete时调用n次析构函数,采用指针的方式访问成员时,即类名 p = new 类名[n],p->成员和p[0].成员,表示对象数组中第一个对象的成员,(p+1)->成员,表示对象数组中第二个对象的成员,以此类推,但如果执行了p+=1(此时p已经改变,而p+1则不改变p的值);则p[0]指向的是对象数组的第二元素。

      对象成员

      即对象中包含有其他的对象

      class Coordinate
      {
      public:
        Coordinate(int x, int y):
          m_x(x), m_y(y){}
        
      private:
        int m_x;
        int m_y;
      };
      

      Coordinate表示点的类,其中包含点的xy坐标

      class Line
      {
      public:
        Line(int x1, int y1, int x2, int y2):
          m_coorA(x1, y1), m_coorB(x2, y2){}
      
      private:
        Coordinate m_coorA;
        Coordinate m_coorB;
      };
      

      Line表示线的类,包含两个点的类,即包含AB两个坐标点

      int main(void)
      {
          Line *p = new Line(1, 2, 4, 5);
          
          delete p;
          p = NUll;
          return 0;
      }
      

      实例化对象时,先实例化m_coorA这个对象再实例化m_coorB这个对象,再实例化p这个对象。销毁时,先销毁p再销毁m_coorB再销毁m_coorA。

    相关文章

      网友评论

          本文标题:[C++之旅] 14 对象成员与对象数组

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