拷贝构造函数
template<T>
class Array {
puclic:
Array(const Array& anotherArray) {
delete[] storage; // 释放旧的内存
// 重新分配内存,并拷贝内容
}
T operator[](int index) { return storage[index] }
private:
T *storage;
};
(1)operator[] 为什么会调用Array 的拷贝构造函数?
(2)为什么执行一次拷贝构造可以,而多次不行呢?
即将operator[]的实现改为:
T result = storage[index] // ok,调用了一次Array的拷贝构造函数
return result;// 这句执行到delete[] storage;这句的时候出错;
vs2005给出的错误信息是(运行时错误):
“0x 00413da4” 指令引用的“0xccccccc8”内存。该内存不能为“read”