class VC
{
private:
float* p_val;
int size;
public:
CVector(float *,int s);
CVector(const CVector &v);
~CVector();
void display(){
for(i=0;i<size;i++)
cout<<p_val[i]<<" ";
cout<<endl;}
};
CVector::CVector(float *p,int s)
{
size=s;
p_val=new float[size];
for(i;i<size;i++)
p_val[i]=p[i];
}
CVector::CVector(const CVector &v)
{
size=v.size;
p_val=new float[v.size];
for(i=0;i<size;i++)
p_val[i]=v.p_val[i];
}
CVector:: ~CVector()
{
delete []p_val;
}
int main()
{
float a[5]={1,2,3,4,5},b[5]={6,7,8,9,10};
CVector c1(a,5),c2(c1);
CVector c3(b,5);
cout<<"对象c1: ";
c1.display();
cout<<"对象c2:";
c2.display();
cout<<"对象c3: ";
c3.display(); // 这里为什么输出的数据是乱码?
return 0;
}
还有,为什么声明时CVector& operator = (const CVector &v); //赋值运算符重载
float& operator[] (int ix); //下标运算符重载
关键字operator前面要加&,是什么意思?
在类外定义时CVector & CVector::operator =(const CVector &v)
float & CVector:: operator [] (int ix)
& 又提到前面?
在重载 其它运算符如 +、++、-时,为什么没有用 &?
你这个是你的源代码么?类名不对,i 也没定义。改了之后倒是能正确输出。
class CVector
{
private:
float* p_val;
int size;
public:
CVector(float *,int s);
CVector(const CVector &v);
~CVector();
void display(){
for(int i=0;i<size;i++)
cout<<p_val[i]<<" ";
cout<<endl;}
};
CVector::CVector(float *p,int s)
{
size=s;
p_val=new float[size];
for(int i=0;i<size;i++)
p_val[i]=p[i];
}
CVector::CVector(const CVector &v)
{
size=v.size;
p_val=new float[v.size];
for(int i=0;i<size;i++)
p_val[i]=v.p_val[i];
}
CVector:: ~CVector()
{
delete []p_val;
}
int main()
{
float a[5]={1,2,3,4,5},b[5]={6,7,8,9,10};
CVector c1(a,5),c2(c1);
CVector c3(b,5);
cout<<"对象c1: ";
c1.display();
cout<<"对象c2:";
c2.display();
cout<<"对象c3: ";
c3.display(); // 这里为什么输出的数据是乱码?
system("pause");
return 0;
}
程序没有问题,主要是i没有初始化,改完后在我这运行正常。
对象c1: 1 2 3 4 5
对象c2:1 2 3 4 5
对象c3: 6 7 8 9 10
本回答被提问者采纳