码迷,mamicode.com
首页 > 编程语言 > 详细

c++运算符重载

时间:2019-09-26 11:52:39      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:重载   its   define   div   color   names   运算   cout   out   

其实c++中各种运算符,都是很特殊的一类函数,运算符函数

不过还是和普通函数有区别的

函数意味着它们可以被重载,这样方便程序员重载一些运算符

说白了,就是你可以自定义这个运算规则

下面是复数类实现加减乘除的运算

加减 用普通成员函数实现

乘除 用友元类成员函数实现

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define cp Complex
 4 
 5 class Complex
 6 {
 7 private:
 8     double r,i;
 9 public:
10     Complex(double R = 0,double I = 0):r(R),i(I){};
11     //成员函数实现
12     Complex operator+(Complex b);
13 
14     Complex operator-(Complex b);
15 
16     //友元函数实现
17    friend Complex operator*(Complex a,Complex b);
18 
19    friend Complex operator/(Complex a,Complex b);
20 
21     void display();
22 };
23 
24 //类外实现函数
25 Complex Complex::operator+(Complex b)
26 {
27   return Complex(r + b.r,i + b.i);
28 }
29 
30 Complex Complex::operator-(Complex b)
31 {
32     return Complex(r - b.r,i - b.i);
33 }
34 
35 Complex operator*(Complex a,Complex b)
36 {
37     Complex t;
38     t.r = a.r*b.r - a.i*b.i;
39 
40     t.i = a.r*b.i + b.r*a.i;
41     return t;
42 }
43 
44 Complex operator/(Complex a,Complex b)
45 {
46     Complex t;
47     double fm = 1 / (b.r*b.r + b.i*b.i);
48 
49     t.r = (a.r*b.r + a.i*b.i)*fm;
50     t.i = (a.i*b.r - a.r*b.i)*fm;
51     return t;
52 }
53 
54 void Complex::display()
55 {
56     if(i == 0) cout << r << endl;
57     else cout << r <<  ((i > 0)?" + ":"") <<  i << "i" << endl;
58 }
59 
60 void test()
61 {
62    cp c1(1,2),c2(3,4),c3,c4,c5,c6;
63    c3 = c1 + c2;
64    c4 = c1 - c2;
65    c5 = c1 * c2;
66    c6 = c1 / c2;
67 
68    c1.display();
69    c2.display();
70    c3.display();
71    c4.display();
72    c5.display();
73    c6.display();
74 }
75 int main()
76 {
77     test();
78     return 0;
79 }

技术图片

c++运算符重载

标签:重载   its   define   div   color   names   运算   cout   out   

原文地址:https://www.cnblogs.com/mch5201314/p/11589682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!