参考 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