コード:
   #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()関数のみを変更して、プログラムの動作が同じになるようにしますが、この問題は解消されます。
ありがとう!!