33,321
社区成员




#include<iostream>
using namespace std;
class test
{
float *v;
int flag;
public:
test()
{//初始化别忘了
this->v=new float[3];
memset(this->v,0,sizeof(float)*3);
this->flag=3;
}
~test()
{//别泄露了。。。
delete [] v;
}
test(float *a)
{//凡是构造,需要给v以空间
this->v=new float[3];
for (int i=0;i<3;i++)
{
v[i]=a[i];
}
this->flag=3;
}
//实现拷贝构造
test(test& _obj)
{
this->v=new float[3];
this->flag = _obj.flag;
for (int i=0;i<3;i++)
{
this->v[i]=_obj.v[i];
}
}
//实现赋值函数
test& operator=(test& _obj)
{
this->flag = _obj.flag;
for (int i=0;i<3;i++)
{
this->v[i]=_obj.v[i];
}
return *this;
}
//重载=操作符号
test& operator=(float* _obj)
{
for (int i=0;i<3;i++)
{
this->v[i]=_obj[i];
}
return *this;
}
int show()
{
cout<<"This flag = "<<this->flag<<endl;
for (int i=0;i<3;i++)
{
cout<<"This v["<<i<<"] = "<<this->v[i]<<endl;
}
return 0;
}
};
int main(void)
{
float x[3]={1.1,2.2,3.3};
//使用带参数构造函数
test v1(x);
v1.show();
//使用拷贝构造函数
test v2(v1);
v2.show();
//使用赋值函数
test v3 = v2;
v3.show();
//使用默认构造函数与重载=操作符号函数
test v4 = x;
v4.show();
system("pause");
return 0;
}
#include<iostream>
using namespace std;
class test
{
float *v;
int flag;
public:
test()
{
v=new float[3];
flag=3;
cout<<"Part one:\n"
<<"v is:"<<v<<endl
<<"flag is:"<<flag<<endl;
}
//test(float *a)
//{
// cout<<"Part two:\n"
// <<"v is:"<<v<<endl
// <<"flag is:"<<flag<<endl;
// cout<<"好好的数咋就变了???";
// v=new float;//不重新new的话就溢出了
// for (int i=0;i<3;i++)
// {
// v[i]=a[i];
// }
//}
test &operator=(float* a)
{
cout<<"Part two:\n"
<<"v is:"<<v<<endl
<<"flag is:"<<flag<<endl;
cout<<"好好的数咋就变了???";
//v=new float;//不重新new的话就溢出了
for (int i=0;i<3;i++)
{
v[i]=a[i];
}
return *this;
}
};
int main(void)
{
float x[3]={1.1,2.2,3.3};
test v1;//初始化
v1=x;//类型转换
system("pause");
return 0;
}