构造函数
我在头文件里定义好类,在第二个文件中定义构造函数的实现,不知为什么赋值不成功?谢谢!!
//13.7.h
class Array
{
public:
Array(int n);
~Array();
//int &operator[](int );
//Array &operator=(Array &);
//int operator==(Array &);
//void print();
private:
int size;
int *ptr;
};
//实现文件
#include <iostream.h>
#include <string.h>
#include "13.7.h "
Array::Array(int n)
{
int temp[3]={1,2,3};
//cout < <temp[2];
size=n;
ptr=new int[size];
for(int i=0,j=0;i <size;++i,++j)
{
if(j <3)
*(ptr+i)=temp[j];
*(ptr+i)=0;
}
cout < <ptr[0] < <endl;
}
Array::~Array()
{
delete [] ptr;
}
[解决办法]
什么叫“赋值”不成功?
看你的代码也可以猜出来,你因为没有实现拷贝构造函数和赋值运算符,出错是正常的。
[解决办法]
if(j <3)
*(ptr+i)=temp[j];
*(ptr+i)=0;
========================================
这里的逻辑,无论如何,最后都会被清0.
[解决办法]
for(int i=0,j=0;i <size;++i,++j)
{
if(j <3)
*(ptr+i)=temp[j];
*(ptr+i)=0; //为啥还要把他赋值为零呢?
}
根据我对楼主的猜测,是不是应该这样
if(j <3)
*(ptr+i)=temp[j];
else
*(ptr+i)=0;