为什么该模板程序运行平稳?

时间:2019-06-28 09:12:42

标签: c++

我找到了这段代码,但我不知道为什么它运行平稳。我认为索引i = 3上应该存在一个运行时错误,在该错误中我们访问未分配的内存。

我检查了一些其他类似的问题,例如Why does this code compile without warnings?

class X {
public:
    X(int x) {
        cout << x - 1;
    }
};

template <class T, int d = 3>
class Container {
    T* arr;
public:

    Container():arr(new T[d]){}
    void setItemAtindex(T item, int ind){
        arr[ind] = item;
    }
    X getitematindex(int ind){
        return arr[ind];
    }
};

int main() {
    Container<int> container;
    for(int i = 1; i < 4; i++){
        container.setItemAtindex(i, i);
        X x = container.getitematindex(i);
    }
   /* int* array = new int[3];
    array[3] = 4;
    cout << array[3];*/
    return 0;
}

程序运行正常并输出012。

让我烦恼的是,/**/中的代码在打印0124(添加了array[3] = 4之后发出了异常,而容器和此数组都与我非常相似。 / p>

感谢您的帮助!

0 个答案:

没有答案