【发布时间】:2012-09-02 14:30:36
【问题描述】:
代码:
#include <iostream>
using namespace std;
class Item
{
int num;
public:
Item(int i) : num(i) {};
int getNum() const { return num; }
};
class ItemPool
{
public:
Item* getItem (int);
};
Item* ItemPool::getItem (int n)
{
static Item myX(0);
if (n%2) return &myX;
else return new Item(n);
}
void main()
{
ItemPool coll;
for (int i=0; i<100; i++)
{
Item* anX = coll.getItem(i);
cout<<anX->getNum()<<’\n’;
}
}
问题:
1) 该程序在执行过程中有哪些语义问题?
2) 只更改 main() 函数,使程序的行为保持不变,但消除了这个问题。
谢谢!!
【问题讨论】:
-
这看起来像家庭作业,但没有这样标记。
-
main()总是返回int,不管微软的 IDE 做什么。打破这个习惯! -
@VaughnCato 只是我在准备考试,这不是家庭作业...如果是我会这样标记的:)
-
@PeteBecker 好的,谢谢你的提示 :)
-
@Vidak:我不确定这种情况下的具体政策,但我认为将其标记为作业是个好主意。至少,最好在您的问题中说明这是来自书本的问题,并具体说明您遇到困难的地方。