代码:
#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() 函数,使程序的行为保持不变,但消除了这个问题。
谢谢!!