首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造函数解决思路

2012-03-17 
构造函数我在头文件里定义好类,在第二个文件中定义构造函数的实现,不知为什么赋值不成功?谢谢!!//13.7.hcl

构造函数
我在头文件里定义好类,在第二个文件中定义构造函数的实现,不知为什么赋值不成功?谢谢!!

//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;

热点排行