Fork me on GitHub

C++——overloading

参考 C++——overloading principle analysis

operator overloading

C语言中,对一个东西进行操作一定要涉及到一个函数,对于自定义类型,为了实现其四则运算你必须给出相应函数,而不能简单使用+=*/等operator。C++考虑到书写习惯,允许对operator进行overloading。事实上,C++中operator就是一种函数,允许你重新定义。operator overloading可以有如下形式

member function

operator会做用到左边object身上,看左边oobject有没有对这个operator做定义。所有的Non-static member function都隐藏包含一个this pointer,用于表明谁发起的这个function call。上图显示this放在了parameters list最左边,现实情况可能不是这样,到底是放在最左边还是最右边还是放在中间什么位置,是由compiler自己决定。但是无论怎样,与programmer都无关,不影响coding。

Non-member function

friend function

参考:C++——friend

overloading写在哪里影响不大,主要是策略问题。还是不推荐friend的做法。

global function

参考:C++——friend

overloading写在哪里影响不大,主要是策略问题。

static function 

overloading写在哪里影响不大,主要是策略问题。

这里面使用static其目的是想把overloading封锁在单个文件内部,这种情况几乎碰不到。

极少数不允许overloading的operator

 

posted @ 2018-08-08 17:17  克拉默与矩阵  阅读(297)  评论(0编辑  收藏  举报