多继承问题 操作符重载

继承函数调用顺序:1.先按照继承关系调用构造函数  2.按照声明顺序调用成员函数和  3.反继承顺序调用析构函数

1.菱形继承问题  因为父类太多 函数产生了二义性 解决方法使用虚继承 virtual      121

2.V形状继承问题  使用类域来确定对哪个进行参数 进行赋值               21

操作符重载:

1.类内重载:把操作符重载为函数,当使用这个操作符时会调用这个函数

格式:返回类型 operator 重载的操作符(形参列表)

参数个数由操作符的操作数决定:单目运算符一般不需要参数:a++,操作this,

双目运算符 a+b,需要1个参数:this是左操作数,这个参数为右操作数

    Student operator + (const Student &stu)const
    {
        Student temp(this->name +' '+ stu.name,this->age + stu.age);
        return temp;
    }

2.类外重载:=操作符不能在类外重载

参数个数由操作符的操作数决定:单目运算符一般需要一个参数:a++ 第一个参数调用操作符重载函数

双目运算符 a+b 需要2个参数  第一个参数为左操作数,第二个参数是有操作数

重载要注意的问题:

1.不能改变操作符的本义

2.不要改变操作符的返回值

3.下面操作符不能重载:     :: ->  .  ->*  .* ? :

原文地址:https://www.cnblogs.com/xiaozoui11cl/p/12768569.html