成员函数和友元函数实现一元运算符重载
使用友元函数实现一元运算符的重载
实现一元运算符的前置重载 即前置++a;
#include <iostream>
using namespace std;class Complex
{
private:int a;int b;
public: Complex(int a= 0,int b = 0){this->a = a;this->b =b;}//友元函数实现运算符++的重载friend Complex& operator++(Complex &c1) ;void printCom(void){cout<< a << "+" << b << 'i'<< endl;}protected:
private:
};
//对前置运算符进行重载
// ++c1 因为最终要得到c1本身函数返回一个引用 这样才能够实现返回引用Complex& operator++(Complex &c1)
{c1.a++;c1.b++;return c1;
}int main()
{Complex c1(1,2),c2(3,4);Complex c3(0,0);++c1;++c1;c1.printCom();cout << "hello world!" << endl;system("pause");return 0;
}
一元运算符重载实现一元运算符的后置重载即 a++;
后置和前置的区别就是后置的多了一个占位符 剩下的就是C++编译器自己调用了不用C++程序员管理管理
#include <iostream>
using namespace std;class Complex
{
private:int a;int b;
public: Complex(int a= 0,int b = 0){this->a = a;this->b =b;}//友元函数实现运算符前置++的重载friend Complex& operator++(Complex &c1);//友元函数实现运算符后置++的运算符重载friend Complex operator++(Complex &c1, int);void printCom(void){cout<< a << "+" << b << 'i'<< endl;}protected:
private:
};
//对前置运算符进行重载
// ++c1 因为最终要得到c1本身函数返回一个引用 这样才能够实现返回引用Complex& operator++(Complex &c1)
{c1.a++;c1.b++;return c1;
}//后置++的运算符重载
//因为后置++的形式和前置++的一样 因此C++里面提供一个占位符的语法可以使用
//调用的时候C++编译器会自动的调用带有占位符的后置 ++的重载函数
Complex operator++(Complex &c1, int) //返归一个元素 //函数返回值不是函数重载的判断标志
{原理分析//return c1;//c1.a++;//c1.b++;Complex tmp = c1; //保证是c1先使用在++c1.a++;c1.b++;return tmp;
}int main()
{Complex c1(1,2),c2(3,4);Complex c3(0,0);// //++c1;//++c1;//c1.printCom();//后置的++c1++;c1.printCom();cout << "hello world!" << endl;system("pause");return 0;
}
重载左移操作符 << 实现链式编程
#include <iostream>
using namespace std;class Complex
{
private:int a;int b;
public: Complex(int a= 0,int b = 0){this->a = a;this->b =b;}//友元函数实现运算符前置++的重载friend Complex& operator++(Complex &c1);//友元函数实现运算符后置++的运算符重载friend Complex operator++(Complex &c1, int);friend ostream& operator<<(ostream &out,Complex &c1);void printCom(void){cout<< a << "+" << b << 'i'<< endl;}protected:
private:
};
//对前置运算符进行重载
// ++c1 因为最终要得到c1本身函数返回一个引用 这样才能够实现返回引用Complex& operator++(Complex &c1)
{c1.a++;c1.b++;return c1;
}//后置++的运算符重载
//因为后置++的形式和前置++的一样 因此C++里面提供一个占位符的语法可以使用
//调用的时候C++编译器会自动的调用带有占位符的后置 ++的重载函数
Complex operator++(Complex &c1, int) //返归一个元素 //函数返回值不是函数重载的判断标志
{原理分析//return c1;//c1.a++;//c1.b++;Complex tmp = c1; //保证是c1先使用在++c1.a++;c1.b++;return tmp;
}
//函数重载 <<操作符 只能单个的输出使用并不能使用多个 因为返回的不是自己
ostream& operator<<(ostream &out,Complex &c1)
{out << c1.a << "+" << c1.b << endl;return out;
}int main()
{Complex c1(1,2),c2(3,4);Complex c3(0,0);// //++c1;//++c1;//c1.printCom();//后置的++//2. 实现//cout.operator << (c1); 在 ostream 类中添加相应的 .operator<<//但是ostream的源码是拿不到的//因此输入输出;流的从在只能使用友元函数的方法实现cout<< c1 << c2 << endl; // 左移操作符放入结合顺序是从左到右的cout << "hello world!" << endl;system("pause");return 0;
}
成员函数和友元函数实现一元运算符重载相关推荐
- C++运算符重载形式--成员函数or友元函数?
1.C++操作符重载形式-成员函数or友元函数 1.对运算符重载,需要坚持四项基本原则: 不可臆造运算符: 运算符原有操作数的个数.优先级和结合性不能改变: 操作数中至少一个是自定义类型: 保持重载运 ...
- C++运算符重载函数作为友元函数
运算符重载函数作为友元函数 在前面的程序例子中对运算符"+"进行了重载,使之能用于两个字符串的相加.在该例中运算符重载函数 operator +(); 作为 my_string类中 ...
- 第七周项目一-成员函数、友元函数和一般函数有区别(1)
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月12日*版 本 号: ...
- 采用成员函数和友元函数计算给定两个坐标点之间的距离
设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离 ...
- java 友元函数_C++ 友元函数用法总结
C++中的友元机制允许类的非公有成员被一个类或者函数访问,友元按类型分为三种: 普通非类成员函数作为友元.类的成员函数作为友元.类作为友元. 1.友元的内容 友元包括友元的声明以及友元的定义.友元的声 ...
- 用成员函数和友元函数重载运算符
一元运算符 首先明白什么是一元,二元和多元运算符,比如++a.b--属于一元运算符,因为参与运算的参数只有一个,以此类推二元运算符就是参与运算的参数有两个,比如a+b. 一元运算符可以表示为:Obje ...
- 10.2 运算符重载函数作为类成员函数和友元函数
Complex operator+(Complex &c2) { Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; ...
- C++运算符重载函数作为类成员函数和友元函数
C++运算符重载函数作为类成员函数 1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同. 因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才 ...
- 运算符重载为成员函数,友元函数
重载运算符是函数重载的一种, 针对类对象进行操作,重载的函数中至少有一个是类对象 int operator +(ass numone, int num){...} 重载为类的成员函数, 单目运算符重载 ...
最新文章
- 小猿圈Python学习教程之后端接收前端回传的文件方法
- java调用微信扫一扫
- 计算机主机安装系统安装系统,系统重装
- span 标记 width 设置
- 解不等式之代数和不等式
- SQLite3中的数据类型
- scala集合中添加元素_如何在Scala中将元素添加到列表中?
- Let's go home(HDU-1824)
- 如何在IDEA中创建并部署JavaWeb程序
- python200行代码小游戏_200 行python 代码实现 2048 游戏
- java动物类_使用java面向对象创建动物类并输出动物信息
- hdu 1133 Buy the Ticket(递推+精度精算)
- 洛谷 P1090 合并果子
- 网络攻防技术——SQL注入
- Unity3d版数字地球、谷歌地球(google earth)
- hive mapreduce reducer 调优
- bind dlz mysql rpm_BIND+DLZ+MYSQL | 学步园
- 转载的java面试题(值得推荐)
- Android 天气APP(一)开发准备
- 深度学习及并行化实现概述