【发布时间】:2011-04-19 19:40:05
【问题描述】:
我有一个基类 Toy 和派生类 Toy_remote_car 和 Toy_battery_car。
我正在这样做:
Toy** ptr;
ptr=new Toy*;
ptr[0]=new Toy_remote_car[1];
ptr[1]=new Toy_battery_car[1];/*this is completely wrong according to my teacher because i never created ptr[1]. Instead this is a misuse of memory according to him.*/
上面的代码(ptr=new Toy*) 正在创建一个Toy(ptr[0]) 类型的单个指针,其中包含派生类Toy_remote_car 的对象。
现在我想写这样的代码:
->不应预定义玩具类型指针的数量。
->相反,我会调用 add_toy 函数,该函数将创建一个指向我想要的对象类型的 ptr。此外,如果我再次调用 add_toy 函数,它不应该将数据分配给 previos ptr,但它应该创建一个新的 ptr。以下约定可能会有所帮助:
ptr[0]=new Toy_remote_car[1];
/*we want to add more toys so add_toy function called. A check is applied.*/
/*The check checks that ptr[0] already contains a value so it creates another pointer ptr[1]*/
ptr[1]=new Toy_battery_car[1];
->此外,我将能够访问所有以前的数据。简而言之:
ptr[0]//contains one type of data.
ptr[1]//contains another type.
//and so on
->所以它会在添加新玩具时自动创建一个玩具类型的指针(ptr)。
我希望我已经很好地解释了我试图在这段代码中实现的内容。
请在这方面帮助我。
谢谢
【问题讨论】:
-
为什么你在免费商店分配指针?!?!
标签: c++ pointers memory-leaks memory-management new-operator