#include<iostream>
using namespace std;
/******************************************/
/*use member function to overload operator*/
/******************************************/
class RMB{
public:
RMB(unsigned int d, unsigned int c);
RMB operator + (RMB&);
RMB& operator ++();
void display(){
cout <<"use member function overload operator"<<(yuan+jf/100.0) << endl;
}
protected:
unsigned int yuan;
unsigned int jf;
};
RMB::RMB(unsigned int d, unsigned int c){
yuan = d;
jf = c;
while (jf >= ){
yuan++;
jf -= ;
}
}
RMB RMB::operator + (RMB& s){
unsigned int c = jf + s.jf;
unsigned int d = yuan + s.yuan;
RMB result(d, c);
return result;
} RMB& RMB::operator ++(){
jf++;
if (jf >= ){
jf -= ;
yuan++;
}
return *this;
}
/******************************************/
/*use friend function to overload operator*/
/******************************************/
class RMBf{
public:
RMBf(unsigned int b, unsigned int a);
friend RMBf operator+(RMBf&, RMBf&); //two operands while member function use just one operand
friend RMBf& operator++(RMBf&); //one operands while member function use no operand
void display(){ cout <<"use friend function to overload operator"<<(yuan+jf/100.0) << endl; }
protected:
unsigned int yuan;
unsigned int jf;
};
RMBf::RMBf(unsigned int b, unsigned int a){
yuan = b;
jf = a;
while (jf >= ){
yuan++;
jf -= ;
}
}
RMBf operator + (RMBf& s1, RMBf& s2){ //needn't class name::operator name, more simple
unsigned int c = s1.jf + s2.jf;
unsigned int d = s1.yuan + s2.yuan;
RMBf result(d, c);
return result;
} RMBf& operator ++(RMBf& s){
s.jf++;
if (s.jf >= ){
s.jf -= ;
s.yuan++;
}
return s;
}
void main(){
RMB d1(, );
RMB d2(, );
RMB d3(, );
d3 = d1 + d2;
++d3;
d3.display(); RMBf f1(, );
RMBf f2(, );
RMBf f3(, );
f3 = f1 + f2;
++f3;
f3.display();
int i;
cin >> i;
}

c++语言友元函数和成员函数对运算符重载的更多相关文章

  1. C++基础 (4) 第四天 this指针 全局函数和成员函数 友元 操作符重载

    1static强化练习-仓库进货和出货 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; c ...

  2. golang写业务代码,用全局函数还是成员函数

    在golang中,函数划分为全局函数和成员函数,在使用的时候,有种情况,会产生一些疑惑的,就是在写业务代码的时候,使用全局函数好像会比较方便,一般业务代码,都不会复用,都是针对特定的业务进行编程,要复 ...

  3. c++-变量,this指针,全局函数,成员函数,自定义数组类

    区分变量属于哪个对象 c++对象管理模型初探 C++类对象中的成员变量和成员函数是分开存储的,C中内存四区仍然有效 C++编译器对普通成员函数的内部处理(隐藏this指针) this指针解决函数形参和 ...

  4. C++ 1//设计立方体类 //创建立方体的类 //设计属性和行为 //获取立方体的面积和体积 //分别利用(全局函数 和 成员函数)判断俩个立方体是否相等

    1 //设计立方体类 2 //创建立方体的类 3 //设计属性和行为 4 //获取立方体的面积和体积 5 //分别利用(全局函数 和 成员函数)判断俩个立方体是否相等 6 #include <i ...

  5. C++_友元2-友元成员函数

    接着上一篇<友元是什么>中,我们发现Remote友元类的大多数方法都是用Tv类的公有接口实现.这意味着这些方法并不是真正需要友元. 事实上唯一直接访问Tv成员的Remote方法是Remot ...

  6. C++走向远洋——34(友元函数,成员函数和一般函数的区别)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:youyuan.cpp * 作者:常轩 * 微信公众号:Worl ...

  7. C++ 友元 (全局函数做友元) (类做友元) (成员函数做友元)

    1 //友元 全局函数做友元 2 /* 3 #include <iostream> 4 #include <string> 5 using namespace std; 6 7 ...

  8. 全局函数VS成员函数

    #include <iostream> using namespace std; class Test { public: Test(int a, int b) { this->a ...

  9. C++多态实现(虚函数,成员函数覆盖、隐藏)

    // 1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace ...

  10. C++(三十三) — 全局函数、成员函数的区别

    区别: (1)全局函数的参数个数,比局部函数要多一个: (2)二者都可,返回元素.返回引用. class test { public: test(int a, int b) { this->a ...

随机推荐

  1. 【Linux】AWK入门

    什么是AWK AWK是一种用于处理文本的编程语言工具,一个模式匹配程序.一个典型的示例是将数据转换成格式化的报告. 在命令行输入如下awk命令: awk -F":" '{ prin ...

  2. Shell教程

    http://www.reddragonfly.org/abscn/index.html

  3. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

  4. [转]ASP.NET Core 中的那些认证中间件及一些重要知识点

    本文转自:http://www.qingruanit.net/c_all/article_6645.html 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系 ...

  5. 最短路径算法-Dijkstra

    Dijkstra是解决单源最短路径的一般方法,属于一种贪婪算法. 所谓单源最短路径是指在一个赋权有向图中,从某一点出发,到另一点的最短路径. 以python代码为例,实现Dijkstra算法 1.数据 ...

  6. Spring事务之详解--三种实现方式

    实现购买股票案例: 一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: /* * 账户 */ public class Accoun ...

  7. c#根据绝对路径获取 带后缀文件名、后缀名、文件名

    zz   C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx& ...

  8. C#使用zxing,zbar,thoughtworkQRcode解析二维码,附源代码

    最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌 ...

  9. 关于#define for if(false);else for

    今日在看一个第三方代码时看到了#define for if(false);else for 这样的一种定义,不明白这样用法的目的,于是查了一下. 这是一个兼容vc6.0的用法,csdn上有这个问题的回 ...

  10. jquery网页可见区域宽

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...