参考《C++程序设计语言》更新于:2020-06-27 02:31:28
形式A
+
-
*
/
%
形式B
^
&
|
~
!
形式C
=
>
>=
<
<=
>>
>>=
<<
例:根据标准库学习的一种重载形式
#include "stdafx.h" #include <process.h> #include <iostream> #include <windows.h> #include <fstream.h> class User{ public: int m_nAge; User(int nAge):m_nAge(nAge){} /* 重载运算符<<(二元运算符),形参为函数指针 */ User& operator<<(User&(*F)(User&)){ F(*this); return (*this); } User& operator<<(const int& age){ std::cout<<age; return (*this); } }; User& Prefix(User& user){ std::cout<<"[User] "; return user; } User& endl(User& user){ std::cout<<std::endl; return user; } int main(int argc, char* argv[]) { User user(90); user<<Prefix<<user.m_nAge<<endl; return 0; }
<<=
==
!=
形式D
++
--
形式E
->
->*
,
形式 F
[]
()
形式G
new
new[]
delete
delete[]
形式H
+=
-=
*=
/=
%=
^=
&=
|=
形式I
&&
||
第一个例子:如果有一个类A,实现A+2.
根据上面的定义,可以在类A的成员函数内实现,代码如下:
class A{ public: A(){} A(int v){ _v = v; } A operator+(int param){ A a; a._v = _v + param; return a; } int getA(){ return _v; } private: int _v; }; int _tmain(int argc, _TCHAR* argv[]) { A a(20); A b = a + 2; std::cout << b.getA() << std::endl; return 0; }
也可以在全局中实现