【发布时间】:2019-12-30 16:30:41
【问题描述】:
我正在尝试实现一个行为类似于 C++ 中的字符串数组的类。这是该类的代码:
class DynamicStringArray{
public:
DynamicStringArray()
:dynamicArray(nullptr), size(0){}
int get_size(){return size;}
void addEntry(const string& s);
string operator[](const int &i){return dynamicArray[i];}
private:
int size;
string* dynamicArray;
};
这是addEntry(const string& s)的代码:
void DynamicStringArray::addEntry(const string& s){
string* tempArr = new string[size + 1];
for(int i = 0; i < size; i++){ tempArr[i] = dynamicArray[i];}
tempArr[size] = s;
size += 1;
dynamicArray = tempArr;
delete[] tempArr;
}
如果我想在“数组”中打印一个字符串,我会根据我的重载函数使用 [] 运算符。 但我的问题是第一个元素没有被打印出来。为什么会这样?
这是我的int main():
DynamicStringArray arr;
arr.addEntry("hello");
arr.addEntry("hey");
cout << arr[0] << endl; // doesn't print anything
cout << arr[1] << endl; // prints hey
【问题讨论】:
标签: c++ arrays dynamic-memory-allocation