C++赋值号能否被继承

在C++中,普通函数能够被继承,但是析构函数和构造函数不能被继承。这里有个问题,C++赋值号能否被继承?

看以下代码:

#include <iostream> using namespace std; class A{ public: A() { a = 0; cout<<"A::A()"<<endl; } A & operator =(A &aa) { cout<<"A:="<<endl; this->a = aa.a; return *this; } int a; }; class B:public A{ public: B() { i=1; cout<<"B::B()"<<endl; } public: int i; }; int main(void){ A a, b; a.a = 100; b.a = 200; a = b; cout<<a.a<<endl; B b1, b2; b1.a = 1; b1.i = 10; b2.a = 2; b2.i = 20; cout <<"***************"<<endl; b1 = b2; cout<<"b1.a: "<<b1.a<<" "<<"b1.i "<<b1.i<<endl; return 0; 观察输出结果:

可以看到没有出错,调用的是A类的重载赋值号方法,而且赋值成功。按理说A类只对A的属性进行赋值号重载,返回A对象,B类的属性应该没有值才对。这是为什么呢?原因是系统自动生成了赋值符号,即使B类没有对赋值号重载,一样可以赋值成功。

我们再在类B内对赋值号进行重载,代码如下:

B& operator =(B &bb){ cout<<"B:="<<endl; this->a = bb.a; this->i = bb.i; return *this; }


再观察输出结果:

此时调用的是B类的重载赋值号方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值