c++ - 为什么叫做操作符重载?
PHPz
PHPz 2017-04-17 11:44:05
0
5
633

如题,按重载的定义,应该具有相同的函数名才行啊,为什么是叫操作符重载,而不是操作符重写?

PHPz
PHPz

学习是最好的投资!

全員に返信(5)
PHPzhong

先来明确一下重载和重写的区别:

1.重载(overload)一般是指同一个作用域里,两个不同的函数用了同一个名字,但是它们必须具有不同的参数列表,例如参数类型不同,或者参个数不同。

2.重写(override)是指在子类中重新实现基类中的虚函数(记住,一定要是虚函数!如果子类中重现实现的是基类中的非虚函数,就应该叫做“隐藏(hide)”了!)。

现在来对号入座吧:假设你重载操作符“+”,其实你重载的函数名就是“+”,与原有(内置)的“+”具有相同的函数名。但是你重载的“+”和原有的“+”应该具有不同的参数列表(否则你就没必要重载了)。事实上,c++要求在重载操作符时,必须保证至少有一个参数是你的自定义的类类型,如果你这么重载

int operator+(int a, int b);

编译器就会报错。你会发现,整个过程中好像和虚函数没什么关系。所以,操作符重载只能叫“重载”,不能叫“重写”。

いいねを押す +0
小葫芦

你把操作符看作函数,其实它就是一种函数,个人见解

いいねを押す +0
大家讲道理

操作符重载整体就是一个概念,你为什么一定要拆开来看?

いいねを押す +0
迷茫

对应原文:

override:函数覆写(重写太容易误解了)
overload:重载
operator overload:操作符重载

不叫覆写的原因,是因为这个特质跟继承关系无关。而重载更偏重其扩展性质。

いいねを押す +0
阿神

类似于函数重载啊。。。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!