C++ 运算符重载
来源:互联网 发布:贝利撒留 知乎 编辑:程序博客网 时间:2024/06/13 16:53
C++运算符重载:
(1)不能改变运算符的优先级;
(2)不能改变运算符的结合型;
(3)默认参数不能和重载的运算符一起使用;
(4)不能改变运算符的操作数的个数;
(5)不能创建新的运算符,只有已有运算符可以被重载;
(6)运算符作用于C++内部提供的数据类型时,原来含义保持不变。
C++ 运算符除了以下几个运算符,其余都能被重载
- 成员选择 "."
- 指向成员操作的指针 ".*"
- 作用域 "::"
- "sizeof"
- 三目运算符 "?:"
运算符重载有两种形式,分为重载为类的成员函数和类的友元函数,重载为友元函数时没有this指针,所以必须带参数,否则将出现编译错误。
运算符重载为类的成员函数的语法为:
函数类型 operator 运算符(形参表) { 函数体;}
运算符重载为类的友元函数的语法为:
friend 函数类型 operator 运算符(形参表) { 函数体;}
= -> () [] delete new 只能重载为类的成员函数
//运算符重载实例#include <iostream>using namespace std;class A{public: A(){ real = imag = 0;} A(double r, double i) { real = r; imag = i; } A operator + (const A &c);//重载为类的成员函数 friend void print(const A &c); //友元函数private: double real; double imag; };inline A A::A + (const A &c) //定义为内联函数,代码复制,运算效率高{ return complex(real + c.real, imag + c.imag);}void print(const A &c) { if(c.imag < 0) cout<<c.real<<c.imag<<'i'<<endl; else cout<<c.real<<'+'<<c.imag<<'i'<<endl;}int main(){ A c1(2.0, 3.5), c2(6.7, 9.8), c3; c3 = c1 + c2; cout<<"c1 + c2 = "; print(c3); //友元函数不是成员函数,只能采用普通函数调用方式,不能通过类的对象调用 return 0;}
0 0
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- C#:运算符重载
- C++:运算符重载
- 百度地图API示范例
- jquery ajax error 200 解决方案
- 数据结构实验之链表四:有序链表的归并
- 哪些情况下索引会失效?
- "=="、equals和hashCode的区别
- C++ 运算符重载
- POJ-2187-Beauty Contest
- 计划
- haproxy hdr和path
- Clion 执行文件输出路径问题
- VS无法加载json文件
- 最大回文长度
- HTTP Status 500 - /demo/common/jsp/Footer.jsp (line: 1, column: 2) Page directive: illegal to have m
- C++ bitset用法