您的位置:首页 > 编程语言 > C语言/C++

c++实现一个 调用多条输出(使用动态数组实现)

2015-03-09 20:48 288 查看
#include <string>

#include<iostream>

#include<vector>

using namespace std;

class A

{

private:int x,y;

public:A(int x=0,int y=0)

       {

           this->x=x;

           this->y=y;

       }

       void fun()

       {

           cout<<x<<","<<y<<endl;

       }

       

       

};

class B

{

private:vector<A *> objvec;

        

public:B(){}

       void add(A * t)

       {

           objvec.push_back(t);

       }

       

       void show()

       {

           vector<A *>::iterator ivec;

           for(ivec=objvec.begin();ivec<objvec.end();ivec++)

               

               (* *ivec).fun();//ivec的类型是A**,可以调用类A的公共方法fun();

             //cout<<* ivec<<endl;如果是输出*ivec的话,不会出错,但是会输出动态数组每个元素的地址。

       }

       

       ~B()

       { vector<A *>::iterator ivec;

       for(ivec=objvec.begin();ivec<objvec.end();ivec++)

           delete *ivec;

       }

       

};

int main (void)

{

//这段客户端的实现与下面的没有太多的区别,但是如果用下一段的代码,类B就必须要有一个析构函数来delete指针。

/*

A *pa1=new A(1,2);

A *pa2=new A(3,4);

A *pa3=new A(5,6);

B *pb=new B();

pb->add(pa1);

pb->add(pa2);

pb->add(pa3);

pb->show();

delete pa1;

delete pa2;

    delete pa3;*/

    

    

    B *pb=new B();

    pb->add(new A(1,2));

    pb->add(new A(3,4));

    pb->add(new A(5,6));

    pb->show();

    

}

总结:这篇博客和上一篇实现的功能相同,都是在客户端一条调用实现多条输出,但是实现的过程却有很大的差异,

这次主要用了动态数组,把元素依次存进数组中,再把数组元素输出就可以了。当然,每次不可忽略的小细节,记住delete。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: