我很难使我的 =
运算符工作。我有这样的课。
SSLColumn::SSLColumn(int n){
m_capacity = n;
m_data = new int[m_capacity];
m_size = 0;
m_start = 0;
m_end = 0;
}
,到目前为止,我的超载运算符就像这样
const SSLColumn& SSLColumn::operator=(const SSLColumn& rhs) {
m_capacity = rhs.m_capacity;
m_data = new int[m_capacity];
m_size = rhs.m_size;
m_start = rhs.m_start;
m_end = rhs.m_end;
for(int i = 0; i < m_size; i++)
m_data[i] = rhs.m_data[i];
return *this;
}
但由于某种原因行不通。我是否缺少或不正确地做某事?
成员变量m_size在构造函数中不初始化,因此,循环在超载运算符中不起作用。请参阅此伪代码,假设M_Size = M_容量:
class SSLColumn {
int m_capacity;
int m_size;
int* m_data ;
public:
SSLColumn( int n);
const SSLColumn& operator=(const SSLColumn& rhs);
};
SSLColumn::SSLColumn( int n) {
m_capacity = m_size = n; // <--- SEE HERE ! ( m_size need some value later
m_data = new int[n];
}
const SSLColumn& SSLColumn::operator=(const SSLColumn& rhs) {
if( m_data == NULL) m_data = new int[m_capacity];
for (int i = 0; i < m_size; i++)
m_data[i] = rhs.m_data[i];
return *this;
}