美文网首页
[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