这句怎么解释为好?

jackylea 2008-11-18 02:03:03
bulk_item *p=new bulk_item(isbn,price,qty,discount);//动态创建一指针指向bulk_item类,然后呢?
源程序如下int main()
{
vector<item_base*> itemvec;
string isbn;
double price,qty,discount;
cout<<"enter the objects of bulk_item:"<<endl;
while(cin>>isbn>>price>>qty>>discount)
{
bulk_item *p=new bulk_item(isbn,price,qty,discount);
itemvec.push_back(p);
//itemvec.push_back(&bulk_item(isbn,price,qty,discount));
}
//遍历vector并根据容器中元素计算购买100本书的net_price总和
double sum=0.0;
for(vector<item_base*>::iterator iter=itemvec.begin();iter!=itemvec.end();++iter)
sum+=(*iter)->net_price(100);
cout<<"the sum are:"<<sum<<endl;
for(vector<item_base*>::iterator it=itemvec.begin();it!=itemvec.end();++it) delete *it;//这里怎么有这么多指针要删除??? return 0;
}
...全文
93 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
P_ghost 2008-11-18
  • 打赏
  • 举报
回复
你所谓了没初始化是什么意思???
难道不new???
还是?bulk_item *p=new bulk_item;
如果是这样的话,就是默认构造来初始化的。
jackylea 2008-11-18
  • 打赏
  • 举报
回复
bulk_item *p=new bulk_item(isbn,price,qty,discount); 突然想起来 括号里面好像是对动态申请的对象的初始化???
试了下,没初始化能编译,但不是想要的结果 帮忙解释下!
cyj626 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liumingrong 的回复:]
因为你的容器里面存放的是new出来的对象的指针,
vector <item_base*> itemvec;
你必须逐个删除,除非你使用的是智能指针

引用楼主 jackylea 的帖子:
bulk_item *p=new bulk_item(isbn,price,qty,discount);//动态创建一指针指向bulk_item类,然后呢?
源程序如下int main()
{
vector <item_base*> itemvec;
string isbn;
double price,qty,discount;
cout < <"enter the objects of bulk_item:" < <endl; …
[/Quote]
up
jackylea 2008-11-18
  • 打赏
  • 举报
回复
bulk_item *p=new bulk_item(isbn,price,qty,discount); 突然想起来 括号里面好像是对动态申请的对象的初始化???
qqwx_1986 2008-11-18
  • 打赏
  • 举报
回复

源程序如下int main()
{
vector <item_base*> itemvec;
string isbn;
double price,qty,discount;
cout < <"enter the objects of bulk_item:" < <endl;
while(cin>>isbn>>price>>qty>>discount)
{
bulk_item *p=new bulk_item(isbn,price,qty,discount);
itemvec.push_back(p);
//itemvec.push_back(&bulk_item(isbn,price,qty,discount));
}
//遍历vector并根据容器中元素计算购买100本书的net_price总和
double sum=0.0;
for(vector <item_base*>::iterator iter=itemvec.begin();iter!=itemvec.end();++iter)
sum+=(*iter)->net_price(100);
cout < <"the sum are:" < <sum < <endl;
for(vector <item_base*>::iterator it=itemvec.begin();it!=itemvec.end();++it) delete *it;//这里怎么有这么多指针要删除???
//防止内存泄漏 ,你上面申请了多少就要释放多少
return 0;
liumingrong 2008-11-18
  • 打赏
  • 举报
回复
因为你的容器里面存放的是new出来的对象的指针,
vector <item_base*> itemvec;
你必须逐个删除,除非你使用的是智能指针

[Quote=引用楼主 jackylea 的帖子:]
bulk_item *p=new bulk_item(isbn,price,qty,discount);//动态创建一指针指向bulk_item类,然后呢?
源程序如下int main()
{
vector <item_base*> itemvec;
string isbn;
double price,qty,discount;
cout < <"enter the objects of bulk_item:" < <endl;
while(cin>>isbn>>price>>qty>>discount)
{
bulk_item *p=new bulk_item(isbn,price,qty,discount);
itemvec.push_back(p);
//itemvec.push_back(&bu…
[/Quote]
Vegertar 2008-11-18
  • 打赏
  • 举报
回复
while(cin>>isbn>>price>>qty>>discount)
{
bulk_item *p=new bulk_item(isbn,price,qty,discount);
itemvec.push_back(p); // 因为循环输入, 所以有多个指针被创建并push_back到vector中
//itemvec.push_back(&bulk_item(isbn,price,qty,discount));
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧