84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如题,按重载的定义,应该具有相同的函数名才行啊,为什么是叫操作符重载,而不是操作符重写?
学习是最好的投资!
先来明确一下重载和重写的区别:
1.重载(overload)一般是指同一个作用域里,两个不同的函数用了同一个名字,但是它们必须具有不同的参数列表,例如参数类型不同,或者参个数不同。
2.重写(override)是指在子类中重新实现基类中的虚函数(记住,一定要是虚函数!如果子类中重现实现的是基类中的非虚函数,就应该叫做“隐藏(hide)”了!)。
现在来对号入座吧:假设你重载操作符“+”,其实你重载的函数名就是“+”,与原有(内置)的“+”具有相同的函数名。但是你重载的“+”和原有的“+”应该具有不同的参数列表(否则你就没必要重载了)。事实上,c++要求在重载操作符时,必须保证至少有一个参数是你的自定义的类类型,如果你这么重载
int operator+(int a, int b);
编译器就会报错。你会发现,整个过程中好像和虚函数没什么关系。所以,操作符重载只能叫“重载”,不能叫“重写”。
你把操作符看作函数,其实它就是一种函数,个人见解
操作符重载整体就是一个概念,你为什么一定要拆开来看?
对应原文:
override:函数覆写(重写太容易误解了) overload:重载 operator overload:操作符重载
不叫覆写的原因,是因为这个特质跟继承关系无关。而重载更偏重其扩展性质。
类似于函数重载啊。。。
先来明确一下重载和重写的区别:
1.重载(overload)一般是指同一个作用域里,两个不同的函数用了同一个名字,但是它们必须具有不同的参数列表,例如参数类型不同,或者参个数不同。
2.重写(override)是指在子类中重新实现基类中的虚函数(记住,一定要是虚函数!如果子类中重现实现的是基类中的非虚函数,就应该叫做“隐藏(hide)”了!)。
现在来对号入座吧:假设你重载操作符“+”,其实你重载的函数名就是“+”,与原有(内置)的“+”具有相同的函数名。但是你重载的“+”和原有的“+”应该具有不同的参数列表(否则你就没必要重载了)。事实上,c++要求在重载操作符时,必须保证至少有一个参数是你的自定义的类类型,如果你这么重载
编译器就会报错。你会发现,整个过程中好像和虚函数没什么关系。所以,操作符重载只能叫“重载”,不能叫“重写”。
你把操作符看作函数,其实它就是一种函数,个人见解
操作符重载整体就是一个概念,你为什么一定要拆开来看?
对应原文:
不叫覆写的原因,是因为这个特质跟继承关系无关。而重载更偏重其扩展性质。
类似于函数重载啊。。。