浅谈C++中用友元函数的方法实现复合运算符(+=等)的重载方法
来源:互联网 发布:windows控制台程序作用 编辑:程序博客网 时间:2024/05/19 05:38
今天偶然翻开就别的C++教材,看到运算符重载部分。恰逢手头上有几道关于运算符重载的题目,于是生硬的敲起代码来,许久未写代码,手不灵活了。
在写到重载复合运算符的题目时,用成员函数的方法比较容易实现。但是题目中还要求使用友元函数的方法实现,于是就卡在这里了。调试了数次后未果,于是上网翻阅资料,发现网上关于使用友元函数的方法实现复合运算符的重载内容甚少。于是乎,便自己鼓捣起来,终于在晚饭前有了结果。下面分享一下我写的代码,小白初次写博客,望大牛们多海涵,多知道。谢过!
相关题目:
定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。分别用成员函数与友元函数编写运算符重载函数。在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。
我的代码如下:
#include <iostream>using namespace std;class Complex{private: double r,i;public: Complex(double R, double I):r(R),i(I){} ~Complex(){}// Complex operator -=(Complex b); void disp(); friend Complex& operator -=(Complex& a, const Complex& b);};/*Complex Complex::operator -=(Complex b) //成员函数实现重载{ r -= b.r; i -= b.i; return *this;}*/void Complex::disp(){ cout<<this->r; if(i>0) cout<<"+"; if(i != 0) cout<<i<<"i"<<endl;}Complex& operator -=(Complex& a, const Complex& b) //友元函数实现重载{ a.r -= b.r; a.i -= b.i; return a;}int main(){ Complex c1(10,20),c2(15,30); c2 -= c1; c1.disp(); c2.disp(); return 0;}
相关题目:
定义描述字符串的类String,编写字符串运算符“+=”的重载函数,使运算符“+=”用于两个字符串联接操作,即用str1+=str2实现字符串函数strcat(str1,str2)的操作功能。要求分别用成员函数与友元函数编写运算符重载函数。在主函数中定义字符串对象 s1("software and ")与s2("hardware"),进行s1+=s2的字符串联接,并输出s1、s2的值。
我的代码如下:
#include <iostream>#include <string>using namespace std;class String{private: char s[256];public: String(const char* str){strcpy(this->s,str);} ~String(){}// String& operator +=(const String& str); //使用成员函数的方法 friend String& operator +=(String& st, const String& str); //使用友元函数的方法 void disp();};/*String& String::operator +=(const String& str) //使用成员函数的方法{ strcat(this->s,str.s); return *this;}*/String& operator +=(String& st, const String& str) //使用友元函数的方法{ strcat(st.s,str.s); return st;}void String::disp(){ cout<<this->s<<endl;}
int main(){ String s1("software and "),s2("hardware"); s1 += s2; s1.disp(); s2.disp(); return 0;}
小生不才,献丑了。
0 0
- 浅谈C++中用友元函数的方法实现复合运算符(+=等)的重载方法
- 用友元函数实现复数类的运算符重载
- 复数类中运算符的重载(用友元函数)
- 用友元函数重载运算符
- 8-1—— 用友元函数进行复数类运算符的重载 任务二
- 2014-项目一--用友元函数实在复数的运算符重载
- 第8周项目1-2用友元函数完成运算符的重载
- 实现复数类中运算符的重载(利用友元函数)
- 第八周项目一 实现复数类中的运算符重载-(2)用友元函数实现(1)
- 重载输出运算符,不用友元函数
- 运算符重载,何时用友元,何时用成员函数
- 第8周项目1(2)—用友元函数实现复数类运算符重载
- 第八周 项目1.2 用友元函数实现复数类中的运算符重载
- 第八周 项目1-用友元函数实现复数类中的运算符重载
- 第八周项目一 2用友元函数实现复数类中的运算符重载
- 利用友元函数实现对运算符的重载
- 部分运算符只能用友元函数(全局函数)重载 以及链式法则
- 利用友元函数实现复数中运算符的重载
- [postgreSQL,c++] PostgreSQL源码分析_StringInfo_primary_2
- iTunes Connect上传APP屏幕快照图片尺寸
- 正则表达式学习心得
- SSH中Hibernate配置二级缓存
- POJ - 1273 Drainage Ditches(最大流)
- 浅谈C++中用友元函数的方法实现复合运算符(+=等)的重载方法
- 使用Python进行文件的分割与合并
- iOS开发中的MD5加密实现
- 数组资源(arrays)的使用
- PHP防止mysql注入方法
- Eclipse常用的高效插件
- strace 调试工具
- 树状递归查找
- Unity3D学习基本知识之数组