c++之操作符重载(二)
来源:互联网 发布:今年的网络流行语 编辑:程序博客网 时间:2024/06/04 19:22
操作符重载可以用两种方式重载
一、用顶层函数进行操作符重载
二、用friend函数进行操作符重载
三、使用成员函数进行操作符重载(在上一篇文章讲过讲过)
1、一个以顶层函数形式被重载的操作符必须在它的参数表中包含一个类的对象
通常,如果使用成员函数重载二元操作符时,只需要一个参数。而用顶层函数时需要两个参数,这两个参数对应着二元操作符的两个操作数。下标操作符[],赋值操作符=,函数调用操作符(),指针操作符->必须以类的成员函数的形式重载;
class Complex{public:Complex();Complex(double );Complex(double ,double);void write() const;double get_real() const { return real; }double get_imag() const { return imag; }private:double real;double imag;};
类的声明与用成员函数重载操作符有所不同,用成员函数重载函数时需要在类里面进行声明;
Complex operator+(const Complex&) const;顶层函数在调用操作符函数:
Complex operator+(const Complex& t, const Complex& u){return Complex(t.get_real + u.get_real, t.get_imag + u.get_imag);}
2、类的私有成员只能被该类的成员函数和该类的friend函数访问,类的保护成员只能被该类的或其派生的成员函数和该类的frieng函数访问。
class C{ //... friend int f(); //...}该声明的作用是赋予f访问C的私有和保护成员的权利,因为f不是成员函数;
class Complex{public:Complex();Complex(double );Complex(double ,double);void write() const;friend Complex operator+(const Complex&, const Complex&);friend Complex operator-(const Complex&, const Complex&);friend Complex operator*(const Complex&, const Complex&);private:double real;double imag;};
Complex operator+(const Complex& t, const Complex& u){return Complex(t.real + u.real, t.imag+ u.imag);}
阅读全文
1 0
- c++之操作符重载(二)
- 操作符重载之二
- 操作符重载(C++)
- C/C++ 之 操作符重载
- 重载操作符二
- C/C++ 之 ‘++’、‘+’、‘+=’、‘-’、‘()’、‘--’ 操作符的重载实现重载
- C++【操作符重载】
- c++::操作符重载
- C++:操作符重载
- 【C++】operator关键字(重载操作符)
- 重温操作符重载(二)
- C++重载操作符之二(输入>>,输出<<,以及乘法)
- c++之基础知识(2)重载 操作符重载
- 《C++primer》操作符重载之CheckoutRecord相关
- 多态性之运算符重载(二)
- C++之操作符重载(三)
- C++-重载操作符<< >> = + - * /
- c++_操作符重载
- 证明NP完全问题
- 手机上line-height不起作用
- 线程的几种状态变化
- ECMAScript基础知识
- [Android] 在代码中改控件的高度
- c++之操作符重载(二)
- spark学习起步(三)--作业提交
- 一个例子,搞定java的方法重载
- linux之redis-3.2.9.tar.gz
- [1] Centos 7.3 前奏
- Android 获取控件的宽和高
- Python考虑for循环时,注意缩进
- u3d保存RenderTexture为Png
- 码云使用问题