ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++友元函数学习笔记

2021-09-20 18:31:29  阅读:168  来源: 互联网

标签:友元 ++ 笔记 vir int Complex C++ operator com


 Complex &operator++() {

        real += 1;

        vir += 1;

        return *this;

}

其中&的作用是为了解决(++com)++的问题,com是Complex的一个对象,如果不加&那么++com返回值就不止com本身,之后的com++就不会在com的基础上++,最后cout << com;就只加了一个1,如果加了&就加了两个1

ostream &operator<<(ostream &out, const Complex &com) {}

其中&的作用是为了实现连续输出。


Complex &operator++(int);与Complex &operator++();的区别

第一个是处理++com的情况,第二个是处理com++的情况


想要返回值只能被访问不能被修改则在函数最前面加一个const

例:

const int operator[](...) const {}


以下是自己实现的一个复数类代码

#include<iostream>

using namespace std;

class Complex {
public:
	Complex(int real, int vir) : real(real), vir(vir) {
		cout << "Constructor : " << this << endl; 
	}
	Complex operator+(int val) {
		return Complex(real + val, vir + val);
	}
	Complex operator++(int val) {
		Complex ret(*this);
		real += 1;
		vir += 1;
		return ret;
	}
	Complex &operator++() {
		real += 1;
		vir += 1;
		return *this;
	}
	Complex operator--(int val) {
		Complex ret(*this);
		real -= 1;
		vir -= 1;
		return ret;
	}
	Complex &operator--() {
		real -= 1;
		vir -= 1;
		return *this;
	}
	Complex operator-(int val) {
		return Complex(real - val, vir - val);
	}
	Complex operator*(int val) {
		return Complex(real * val, vir * val);
	}
	Complex operator/(int val) {
		return Complex(real / val, vir / val);
	}
	friend Complex operator+(const Complex &, const Complex &);
	friend Complex operator*(const Complex &, const Complex &);
	friend Complex operator/(const Complex &, const Complex &);
	friend Complex operator-(const Complex &, const Complex &);
	friend void output(Complex &);
	friend ostream &operator<<(ostream &, const Complex &); 
private:
	int real, vir;
};

Complex operator+(const Complex &a, const Complex &b) {
	return Complex(a.real + b.real, a.vir + b.vir);
}

Complex operator-(const Complex &a, const Complex &b) {
	return Complex(a.real - b.real, a.vir - b.vir);
}

Complex operator*(const Complex &a, const Complex &b) {
	return Complex(a.real * b.real, a.vir * b.vir);
}

Complex operator/(const Complex &a, const Complex &b) {
	return Complex(a.real / b.real, a.vir / b.vir);
}

void output(Complex &a) {
	cout << a.real << "\t" << a.vir << endl;
	return ;
}

ostream &operator<<(ostream &out, const Complex &a) {
	out << a.real << "\t" << a.vir;
	return out;
} 

int main() {
	Complex com(4, 5);
	output(com);
	cout << com + 5 << endl;
	cout << (++com)++ << endl;
	cout << com << endl;
	Complex com1(2, 3);
	cout << com * com1 << endl;
	
	
	return 0;
}

标签:友元,++,笔记,vir,int,Complex,C++,operator,com
来源: https://blog.csdn.net/qqQQqsadfj/article/details/120390770

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有