C++ 虚函数多态的意义

假设
A是父类,里面有virtual fun()。
B、C是public继承的子类,override了fun()。

创建对象引用,多态有以下代码:

B b;
C c;
A& n=b;
A& m=c; 
n.fun();
m.fun();

我在想,多态有什么意义呢?为什么要把子类引用给父类呢?这不是多次一举吗?

直接B& n=b; C& m=c; 他不香吗?

反正都是两行代码,分配的内存空间也是一样大小的,性能也没有差别。


说白了,多态的意义就在于写代码更通解,并能够减少代码text区的容量(堆栈区应该不会变)。
以手机为例,Phone为基类,Huawei、Xiaomi、Apple是子类且已override虚函数,考虑以下代码:

【文章开头的非多态版】
int price_diff(Huawei&,Xiaomi&);
int price_diff(Xiaomi&,Huawei&);
int price_diff(Huawei&,Apple&);
int price_diff(Apple&,Huawei&);
int price_diff(Xiaomi&,Apple&);
int price_diff(Apple&,Xiaomi&);
Huawei mate40;	
Xiaomi mi10;
Apple iphone11;
cout << price_diff(mate40,mi10) << endl;
cout << price_diff(iphone11,mi10) << endl;
//可以看到,当厂商种类多起来后,将要重载price_diff函数的个数为N的阶乘个。
【多态版】
int price_diff(Phone&,Phone&);
Huawei mate40;	
Xiaomi mi10;
Apple iphone11;
cout << price_diff(mate40,mi10) << endl;
cout << price_diff(iphone11,mi10) << endl;
//可以看到,多态版很轻松就把Huawei,Xiaomi,Apple类传入函数,并会自动调用指定的override过的函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朴人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值