C++中赋值运算符能不能被派生类继承

      如果基类中重写了赋值运算符重载函数,派生类中没有重写的话,那么当用派生类调用赋值运算符时,基类的运算符重载函数会被调用,而且派生类的成员也会进行赋值。
      如果基类中重写了赋值运算符重载函数,派生类中也重写了的话,那么如果派生类的赋值运算符重载函数里没有显示的调用的基类的赋值运算符重载函数,那么基类的赋值运算符重载函数是不会被调用的,当派生类对象调用赋值运算符重载函数时,基类部分的值是不会被赋值的。
      所以,当我们基类和派生类都写了的话,那么在派生类中一定要显示的调用基类的赋值运算符重载函数。
      当有菱形继承时,第一个类有指针,需要写赋值运算符重载函数,中间两个类因为本类中没有指针成员,所以不需要写,当他们使用赋值运算符时,系统会提供一个默认的赋值运算符重载函数,在这个函数中,系统会调用基类重写的赋值运算符重载函数,对指针成员进行深拷贝。而在最后一个类中,因为此类也有指针成员,所以也需要写赋值运算符重载函数,但是在这个函数中,我们需要显示的去调用第一个类的赋值运算符重载函数,也需要显示的调用本类继承前两个类的赋值运算符重载函数,尽管前两个类有默认的赋值运算符重载函数,但是在这里边不会去调用基类的赋值运算符重载函数,它只会对本类的数据成员进行赋值,不会对基类的成员赋值,就类似于构造函数一样(因为采用的是虚继承)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值