问题
在含参构造函数中
this->m_arry = new T[this->m_capacity];
请问一下[]中的this->m_capacity前面加了后为什么说我非法间接寻址
this->m_arry是m_arry的地址
[]中不是要填一个值吗,然后我就在this->m_capacity前面加了个进行解引用但是系统报错删了就不报错了
#include <iostream>
using namespace std;
template<class T>
class fruit
{
public:
fruit(int capacity){
cout << "构造函数" << endl;
this->m_capacity = capacity;
this->m_size = 0;
this->m_arry = new T[this->m_capacity];
}
fruit(const fruit&p){
this->m_capacity = p.m_capacity;
this->m_size = p.m_size;
this->m_arry = new T[p.m_capacity];
for (int i=0; i < this->m_size; i++)
{
this->m_arry[i] = p.m_arry[i];
}
}
fruit& operator=(const fruit&p){
cout << "operato=函数重载" << endl;
if (this->m_arry != NULL)
{
delete[]this->m_arry;
this->m_arry = NULL;
this->m_capacity = 0;
this->m_size = 0;
}
this->m_size = p.m_size;
this->m_capacity = p.m_capacity;
this->m_arry = new T[p.m_capacity];
for (int i=0; i < this->m_size; i++)
{
this->m_arry[i] = p.m_arry[i];
}
return *this;
}
~fruit()
{
if (this->m_arry != NULL)
{
delete[]this->m_arry;
this->m_arry = NULL;
}
}
private:
//数组容量
int m_capacity;
//数组元素个数
int m_size;
T* m_arry;
}