C++中运算符重载相关知识
2012-04-06 15:34
190 查看
操作符重载的方法是定义一个重载操作符的函数,在需要执行被重载操作符时,系统就自动调用该函数实现相应的操作。操作符重载实质上就是函数的重载。 操作符重载的规则: C++不允许用户自定义新的操作符,只能对已有的C++操作符进行重载。 C++中绝大部分操作符允许重载,除了以下几种:
.(成员访问操作符)
.*(成员指针访问操作符)
::(域解析操作符)
?!(条件操作符)
sizeof(长度操作符) 重载不能改变操作符运算对象(即操作数)的个数。 重载不能改变操作符的优先级别。 重载不能改变操作符的结合性。 重载操作符的函数不能有默认参数。 重载的操作符必须和用户自定义类型对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。即参数不能全部是C++的标准类型。 用于类对象的操作符必须重载,但“=”和“&”除外。 操作符重载函数可以是类的成员函数,也可以是类的友元函数,还可以是既非类的成员函数也不是友元函数的普通函数。 重载为类的成员函数和友元函数可以访问类的私有成员。 当运算符左侧的操作数属于C++标准类型或是一个其他类的对象,则运算符重载不能作为成员函数,只能作为非成员函数。如:Matrix*Vec3可以重载为Matrix的成员函数,而Vec3*Matrix不能重载为Matrix的成员函数,只能重载为Matrix的友元函数或普通函数。 有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数,而有的运算符则不能定义为类的成员函数(如输入“<<”和输出运算符“>>”)。
.(成员访问操作符)
.*(成员指针访问操作符)
::(域解析操作符)
?!(条件操作符)
sizeof(长度操作符) 重载不能改变操作符运算对象(即操作数)的个数。 重载不能改变操作符的优先级别。 重载不能改变操作符的结合性。 重载操作符的函数不能有默认参数。 重载的操作符必须和用户自定义类型对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。即参数不能全部是C++的标准类型。 用于类对象的操作符必须重载,但“=”和“&”除外。 操作符重载函数可以是类的成员函数,也可以是类的友元函数,还可以是既非类的成员函数也不是友元函数的普通函数。 重载为类的成员函数和友元函数可以访问类的私有成员。 当运算符左侧的操作数属于C++标准类型或是一个其他类的对象,则运算符重载不能作为成员函数,只能作为非成员函数。如:Matrix*Vec3可以重载为Matrix的成员函数,而Vec3*Matrix不能重载为Matrix的成员函数,只能重载为Matrix的友元函数或普通函数。 有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数,而有的运算符则不能定义为类的成员函数(如输入“<<”和输出运算符“>>”)。
相关文章推荐
- C++ STL相关知识及容器使用要点
- C++知识要点整理09:运算符重载
- 【C++】类和对象--基础知识+四个默认成员函数+运算符重载
- C++实现:自定义数组类型实现相关运算符重载
- 挑战30天C++入门极限-c++中函数重载的相关知识
- C++函数对象,Lambda,function,bind相关知识
- 关于c++检测内存泄露相关知识(windows程序调试)
- C++ 相关知识总结
- 关于C++检测内存泄露相关知识(Windows程序调试)
- C++中指针的数据类型和运算相关知识小结
- C++中typedef、const、预处理等相关知识总结
- 关于c++检测内存泄露相关知识(windows程序调试)
- C++ 11相关知识学习
- 常常忘记的C++基础知识及VS2008的相关操作
- C/C++中的内存分区及堆栈相关知识
- C/C++中指针与数组的相关知识
- C++的sstream相关知识
- 介绍有关学习C++ STL的预备知识和STL的相关背景知识,适合想对STL做大致了解的初学者
- C++相关基础知识(转贴)
- linux内存介绍以及c/c++内存管理的相关知识