运算符重载(作为普通函数)

运算符重载---基本概念

C++程序设计

郭炜 刘家瑛

 1 #include<iostream>
 2 using namespace std;
 3 class Complex{
 4 public:
 5     double real;
 6     double imaginary;
 7     Complex(double a=0.0,double b=0.0) : real(a),imaginary(b) {}//初始化
 8     ~Complex(){}
 9     void print();
10 };
11 Complex operator+(Complex& a,Complex& b)//运算符重载函数(作为普通函数)
12     {
13         return Complex(a.real+b.real,a.imaginary+b.imaginary);
14     }
15 void Complex::print()
16 {
17     cout<<real<<"+"<<imaginary<<"i"<<endl;
18 }
19 int main()
20 {
21     Complex a(3,2),b(5,4),c;
22     c=a+b;
23     c.print();
24     return 0;
25 }

注:重载为普通函数时,参数个数为运算符数目

时间: 2024-07-30 17:58:53

运算符重载(作为普通函数)的相关文章

C++运算符重载(友元函数方式)

我们知道,C++中的运算符重载有两种形式:①重载为类的成员函数(见C++运算符重载(成员函数方式)),②重载为类的友元函数. 当重载友元函数时,将没有隐含的参数this指针.这样,对双目运算符,友元函数有2个参数,对单目运算符,友元函数有一个参数.但是,有些运行符不能重载为友元函数,它们是:=,(),[]和->. 重载为友元函数的运算符重载函数的定义格式如下: [cpp] view plaincopy 一.程序实例 [cpp] view plaincopy 1 //运算符重载:友元函数方式 2

C++运算符重载为友元函数学习笔记

初探C++运算符重载学习笔记 在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况. 下面的两种情况发生,则我们需要将运算符重载为类的友元函数 <1>成员函数不能满足要求 <2>普通函数又不能访问类的私有成员时 举例说明: class Complex{ double real, imag; public: Complex(double r, double i):real(r), imag(i){ }; Complex operator+(double r); };

运算符重载为成员函数

运算符重载实质上就是通过函数重载,重载为成员函数,它就可以自由的访问本类的数据成员,实际使用时,总是通过该类的某个对象来访问重载的运算符.如果是双目运算符,左操作数是对象本身的数据,由this指针指出,就不再需要任何参数.下面分别介绍这两种情况. 对于双目运算符B,如果要重载为类的成员函数,使之能够实现表达式oprd1 B oprd2,其中oprd1为A类的对象,则应当把B重载为A类的成员函数,该函数只有一个形参,形参的类型是oprd2所属的类型.经过重载之后,表达式就相当于函数调用orpd.o

对运算符重载和友元函数的例子

以下是博主在学习完运算符重载和友元函数后编写的一个例子,实现一个复数的基本运算.定义的头文件: /****************************************************************** complex.h Defination of the complex ******************************************************************/ #ifndef _complex_ #define _com

C++运算符重载(成员函数方式)

一.运算符重载 C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作.如果将C++中这些现存的运算符直接作用于用户自定义的类型数据上,会得到什么样的结果呢?编译器无法给出正常的结果,因为我们需要运算符重载,给运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为,增强了运算符的普适性. 运算符重载的实质是函数重载.在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型

运算符重载为友元函数,或者普通函数

重载为友元函数时,一般先在类内用friend关键字声明,然后在类外具体实现(具体实现时不需friend,也不需类名) 重载为普通函数时,直接在类外给出函数实现即可(也不需要类名): 二者的区别在于友元函数对类的数据成员有直接获取权限,而普通函数还要通过类的接口访问数据成员. 还有一种是运算符重载为类的成员函数.同友元类似,成员也有直接访问私有数据成员的权限. 那么什么时候重载为成员,什么时候重载为友元呢?

第八周(运算符重载)一般函数

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第八周(运算符重载) *作者:王忠 *完成日期:2015.4.28 *版本号:v1.0 * *问题描述:请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 *输入描述: *程序输出: #include <iostream> using namespace std; class Complex { public: Complex(){real=0;i

运算符重载和友元函数

1. 运算符重载 c++允许将运算符重载扩展到用户定义的类型,例如:允许使用+将两个对象相加,编译器将根据操作数的数目和类型决定使用哪种加法定义,重载运算符可以使代码看起来更加自然. 例:计算时间,一个运算符重载的实例: class Time { private: int hours; int minutes; public: Time() {} Time(int hours, int minutes) { this->hours = hours; this->minutes = minute

Swift - 运算符重载和运算符函数

让已有的运算符对自定义的类和结构进行运算或者重新定义已有运算符的运算规则,这种机制被称为运算符重载. 1,通过重载加号运算符,使自定义的两个坐标结构体对象实现相加: 1 2 3 4 5 6 7 8 9 10 11 struct CenterPointer{     var x=0, y=0 } func + (left:CenterPointer, right:CenterPointer) -> CenterPonter{     return CenterPointer(x:left.x+ri

C++运算符重载为非成员函数

1 #include<iostream> 2 using namespace std; 3 class Complex{ 4 public: 5 Complex(double r=0.0,double i=0.0):real(r),imag(i){} 6 friend Complex operator + (const Complex &c1,const Complex &c2); 7 friend Complex operator - (const Complex&c