C++ Operator Overloading

一、重载规则

I.可以重载的操作符

+ - * / %
^ & | ~ !
= > < += -=
*= /= %= ^= &=
|= >> << >>= <<=
== != >= <= &&
|| ++ -- ->* ,
-> [] () operator new operator new[]
operator delete operator delete []

II.不能重载的操作符

:: . .* ? :
sizeof typeid new delete
static_cast dynamic_cast const_cast reinterpret_cast

III.基本规则

1.一元操作符可以是不带参数的成员函数[1]或带一个参数的非成员函数[1]
2.二元操作符可以是带一个参数的成员函数[1]或带两个参数的非成员函数[1]
3.operator=、operator[]、operator()、operator->只能定义为成员函数[1]
4.operator->的返回值必须是一个指针或能使用->的对象。
5.重载 operator++ 和 operator-- 时带一个 int 参数表示后缀,不带参数表示前缀。
6.除 operator new 和 operator delete 外,重载的操作符参数中至少要有一个非内建数据类型。
[email protected] 搜索范围为:x 成员函数--> 全局函数/X所在名字空间中的函数/Y所在名字空间中的函数/X的友元函
    数/Y的友元函数。
8.重载的的操作符应尽量模拟操作符对内建类型的行为。

时间: 2024-10-12 15:19:42

C++ Operator Overloading的相关文章

C# to IL 5 Operator Overloading(操作符重载)

Every operator overload that we use in C#, gets converted to a function call in IL. Theoverloaded > operator translates into the function op_GreaterThan and a + gets convertedto op_Addition etc. In the first program of this chapter, we have overloade

Operator overloading

By defining other special methods, you can specify the behavior of operators on user-defined types. For example, if you define add method for the Time class, you can use the + operator on Time objects. def __add__(self,time): seconds = self.time_to_i

面向对象程序设计-C++ Default constructor &amp; Copy constructor&amp; Destructor &amp; Operator Overloading【第九次上课笔记】

先上笔记内容吧: 这次上课的内容有关 构造函数 析构函数 运算符重载 return * this 内容很细,大家好好回顾笔记再照应程序复习吧 :) #include <iostream> using namespace std; class Integer { public: int i; int geti () const {return this->i;} void seti (int i) {this->i = i;} Integer(int j = 0); Integer(

C++ Super-FAQ 『Operator Overloading』

哪些操作符不能被重载 .     ?:     ::     .*     sizeof 由于一些历史原因,?:不能被重载.若重载expr1 ? expr2 : expr3,不能确保expr2或expr3中只有一个被执行. sizeof是内嵌操作符,某些操作符依赖它的实现,故不允许重载. 域描述符::两边不是对象或表达式,而是供编译器识别的名称.:: performs a (compile time) scope resolution rather than an expression eval

面向对象程序设计-C++ Operator Overloading &amp; Type conversion (Static)【第十一次上课笔记】

本次上课继续讲解了 [ ] .-> 等运算符重载的具体例子 也讲解了C++单个参数的类的类型转换的案例 最后稍微提到了 static 的第三种作用:静态数据成员 具体详解我都已注释出来了,大家可以慢慢看 有任何问题都可以在这篇文章下留言我会及时解答 :) #include <iostream> #include <cmath> using namespace std; class myArray { private: float * p; unsigned int size;

C++ 运算符重载(operator overloading)

运算符重载是通过函数实现的,它本质上是函数重载. 运算符重载其实就是定义一个函数,在函数内实现想要的功能,当用到这个运算符时,编译器会自动调用这个函数. 可以将operator运算符名称这一部分看作函数名,例如operator+. 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12355294.html

c++ operator

这篇博文是以前很久写的,贴在我的早期一个blog中,今天google一下,发现还真有不少人转载,可惜并不注明出处.那时觉得operator比较好玩.C++有时它的确是个耐玩的东东.operator它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换). 1.operator overloading C++可以通过operator 重载操作符,格式如下:类型T operator 操作符 (),如比重载+,如下所示 [cpp

operator 的两种用法

C++,有时它的确是个耐玩的东东,就比如operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换). 1.操作符重载C++可以通过operator实现重载操作符,格式如下:类型T operator 操作符 (),比如重载+,比如下面这个例子template<typename T> class A{public:     const T operator+(const T& rhs)     {  

C++ operator overload -- 操作符重载

C++ operator overload -- 操作符重载 2011-12-13 14:18:29 分类: C/C++ 操作符重载有两种方式,一是以成员函数方式重载,另一种是全局函数. 先看例子 #include <iostream> #include <string> using namespace std; /* defualt operator= differ from my own one. * assign 0 or 1 to TEST_EQ, look the dif