【学习笔记】c++ 类 重载运算符

最近学校C++学到了类,要求自己实现一个向量类,做了一部分典型的重载运算符,以作笔记。

本类Vector对应的是一个向量,通过一个长度为n的数组(为了简化而取int)对应n维向量。

class Vector{//首先是类申明,用的构造函数是默认构造函数,实在是懒得写了
public:
    void Input(int *A,int n1); //输入部分,要求输入目标向量的数组名和实际需要的长度
    ~Vector();//析构函数
    void Vecnew(int nk); //申请动态数组
    void Print();//输出函数
    void operator=(const Vector &v);//重载等号
    void Vector::operator+=(int j)const;//重载+=
    friend Vector Vector::operator+(Vector &v,Vector &u);//重载w=v+u类型,w,v,u向量类
private:
    int *k; //数组指针
    int n; //长度、维数
};
  • 准备工作:
void Vector::Input(int *A,int n1){
    n=n1;
    Vecnew(n1);//申请动态数组
    int i;
    for(i=0;i//录入完毕
void Vector::Vecnew(int nk){
    k=new int[nk];//根据输入的长度申请动态空间
    k[nk]='\0';//防止溢出
}
  • 只做了三种重载,分别是:
    1.=,其他重载的基础
    2.+=,仅需要对一个常数进行支持,和++这类单目运算符类似
    3.w=v+u,需要对另两个类进行支持,需要用到友元函数
    其他的运算符无非也就止于这三类,不急于一次性完成所有的重载

第一类:=

void Vector::operator=(const Vector &v){  //申明重载,右侧类记作v,左侧为w
    n=v.n;//类w的初始化
    Vecnew(n);//同上
    int i;
    for(i=0;i//复制完毕
}

第二类:+=

void Vector::operator+=(int j)const{ //参照第一类
    int i;
    for(i=0;i

第三类:w=v+u

friend Vector:: Vector operator+(Vector &v,Vector &u){//申明重载并使用友元函数
    Vector w;//临时存放的目标类
    w.n=v.n;
    w.Vecnew(w.n);
    int i;
    for(i=0;ireturn w;//返回类到等号右侧
}
  • 析构函数
~Vector(){
    k[0]='\0';//防止溢出
    delete k;//删除动态空间
}

你可能感兴趣的:(c++,重载,类)