8_3.cpp
来自「c++书籍的源代码」· C++ 代码 · 共 95 行
CPP
95 行
#include<iostream.h>
#include<stdlib.h>
class vect
{
public:
vect(int x=1);//构造函数
vect(vect &s);//拷贝构造函数
~vect(); //析构函数
vect& operator =(vect &s);
int operator [](int i);
int operator ()(int i);
static void error(int n);
friend vect operator +(vect &c1,vect &c2);
friend ostream& operator <<(ostream& out,const vect &s);
friend istream& operator >>(istream& in,const vect &s);
private:
int len; //向量长度
int *p;
};
vect::vect(int x)
{
len=x;
p=new int[len];
}
vect::vect(vect &s)
{
len=s.len;
p=new int[len];
for(int i=0;i<len;i++)
*(p+i)=*(s.p+i);
}
vect::~vect()
{
delete []p;
}
vect& vect::operator =(vect &s)
{
for(int i=0;i<len;i++)
*(p+i)=*(s.p+i);
return(*this);
}
int vect::operator [](int i)
{
if(i<=0||i>len)
error(1);
return(*(p+i-1));
}
int vect::operator ()(int i)
{
if(i<=0||i>len)
error(1);
return(*(p+i-1));
}
void vect::error(int n)
{
if(n==1)
cout<<"下标越界!"<<endl;
else if(n==2)
cout<<"向量长度不匹配!"<<endl;
exit(1);
}
vect operator +(vect &c1,vect &c2)
{
if(c1.len!=c2.len)
vect::error(2);
vect m(c1.len);
for(int i=0;i<m.len;i++)
*(m.p+i)=*(c1.p+i)+*(c2.p+i);
return(m);
}
ostream& operator <<(ostream& out,const vect &s)
{
for(int i=0;i<s.len;i++)
out<<" "<<*(s.p+i);
return(out);
}
istream& operator >>(istream& in,const vect &s)
{
cout<<"请输入向量的值:"<<endl;
for(int i=0;i<s.len;i++)
in>>*(s.p+i);
return(in);
}
int main()
{
vect a(5),b(5),c(5);
cin>>a>>b;
cout<<a<<endl;
cout<<b<<endl;
cout<<"a[1]="<<a[1]<<" b(5)="<<b(5)<<endl;
c=a+b;
cout<<c<<endl;
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?