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。
#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。
相关文章推荐
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- 一个简单的使用SOAP协议调用Webservice实现
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
- linux下使用jni实现c++调用java程序(2)找不到java类的问题
- 如何实现使用C/C++直接调用系统默认浏览器?
- 转:使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- 基于Linux系统调用使用php实现一个在线编译运行C语言程序的系统
- java中使用C++指针实现java调用C#
- Ext Js 4实现的一个搜索框,调用的是谷歌的api,使用谷歌来搜索
- linux下使用jni实现c++调用java程序(1)准备工作
- 使用SWIG实现C/C++与其他语言间的互相调用 zz
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- 一个在HTML使用JavaScript实现调用Windows Shell.Application的例子。
- 使用SWIG实现C/C++与其他语言间的互相调用 zz
- 使用extjs,来实现一个页面调用另一个页面中的方法,并且能获得方法的返回值
- 使用C++实现SDK之WebBrowser容器 系列的一个补充. 关于GetHtmlDocumentX()
- 使用 SWIG 实现 Java 调用 C++ DLL
- 实现一个简单的log类,目标:能够在VS的输出窗口定位调用点
- C++实现输入一个整数,将各位数字反转后输出
- 使用MVC中的HtmlHelper对象的ActionLink方法,实现一个Javascript:void(0)效果,去调用一个JS方法