第一关

#include <iostream>
using namespace std;/********* Begin *********/class Complex
{//复数类的声明
public:float real;float image;Complex(float r,float i){real=r;image=i;}void Print(){if(image<0){cout<<real<<image<<'i'<<endl;}else{cout<<real<<'+'<<image<<'i'<<endl;}}  };
//复数类的定义
Complex operator+ (Complex& t1,Complex& t2){Complex t(0,0);t.real=t1.real+t2.real;t.image=t1.image+t2.image;return t;}  Complex operator-(Complex& t1,Complex& t2){Complex t(0,0);t.real=t1.real-t2.real;t.image=t1.image-t2.image;return t;} Complex operator*(Complex &t1,Complex &t2){Complex t(0,0);t.real=t1.real*t2.real-t1.image*t2.image;t.image=t1.image*t2.real+t1.real*t2.image;return t;}  /********* End *********/

第二关

class Virus
{//病毒类的声明
public:
int Gen;
Virus(){Gen=0;
}
Virus (const Virus &v){this->Gen=v.Gen+1;
}};
//病毒类的定义以及其他内容
bool operator==(const int& g,const Virus &v){if(v.Gen==g){return true;}else{return false;}
}

第三关

#include <iostream>
#include <string>
using namespace std;/********* Begin *********/
// 前置声明 Teacher 类
class Teacher;class Student
{//学生类的声明
public:friend class Teacher;Student(int num,string nam,string se){number=num;name=nam;sex=se;}void Print(){cout<<"学生:"<<name<<",编号:"<<number<<",性别:"<<sex<<endl;}
private:int number;string name;string sex;};
//学生类的定义class Teacher
{//教师类的声明public:Teacher(const Student &t){this->number=t.number;this->name=t.name;this->sex=t.sex;}Teacher(int num,string nam,string se){number=num;name=nam;sex=se;}void Print(){cout<<"教师:"<<name<<",编号:"<<number<<",性别:"<<sex<<endl;}     private:int number;string name;string sex;  };
//教师类的定义

第四关

注意矩阵计算的一些知识,特别是乘法

#include <iostream>
#include <string>
using namespace std;/********* Begin *********/
class Matrix
{//矩阵类的声明public:friend Matrix operator+(Matrix& m1,Matrix &m2);friend Matrix operator-(Matrix& m1,Matrix &m2);friend Matrix operator*(Matrix& m1,Matrix &m2);Matrix(int r=0,int c=0){row=r;col=c;/*for(int i=0;i<r;i++){for(int j=0;j<c;j++){data[i][j]=0;}}*/}void Fill(int val){for(int i=0;i<row;i++){for(int j=0;j<col;j++){data[i][j]=val;}}}void Set(int r,int c,int val){data[r][c]=val;}void Print(){for(int i=0;i<row;i++){for(int j=0;j<col;j++){cout<<data[i][j]<<' ';}cout<<endl;}}private:int row;int col;int data[100][100];};
//矩阵类的定义Matrix operator+(Matrix& m1,Matrix &m2)
{//实现矩阵加法Matrix t;t.row=m1.row;t.col=m1.col;for(int i=0;i<m1.row;i++){for(int j=0;j<m1.col;j++){t.data[i][j]=m1.data[i][j]+m2.data[i][j];}}return t;}Matrix operator-(Matrix& m1,Matrix &m2)
{//实现矩阵减法Matrix t;t.row=m1.row;t.col=m1.col;for(int i=0;i<m1.row;i++){for(int j=0;j<m1.col;j++){t.data[i][j]=m1.data[i][j]-m2.data[i][j];}}return t;}Matrix operator*(Matrix& m1,Matrix &m2)
{//实现矩阵乘法Matrix t;t.row=m1.row;t.col=m2.col;for(int i=0;i<m1.row;i++){for(int j=0;j<m2.col;j++){int temp=0;for(int k=0;k<m2.row;k++){temp+=m1.data[i][k]*m2.data[k][j];}t.data[i][j]=temp;}}return t;}

C++实训 面向对象 - 运算符重载与友元函数相关推荐

  1. C++运算符重载(友元函数方式)

    我们知道,C++中的运算符重载有两种形式:①重载为类的成员函数(见C++运算符重载(成员函数方式)),②重载为类的友元函数. 当重载友元函数时,将没有隐含的参数this指针.这样,对双目运算符,友元函 ...

  2. 【C++】C++类的学习(三)——运算符重载与友元函数

    [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 前言 前面的两篇博文中介绍了类的一些基本特性,今天讲一讲运算符重载和友元. 运算符重载 运算 ...

  3. C++学习笔记(10)运算符重载,友元函数,友元类

    c++允许我们为运算符定义专门的函数,这被称为运算符重载: 运算符可以简化字符串的操作,'+',以及使用关系运算符比较字符串,[ ]运算符访问向量中的元素: 例如: #include <iost ...

  4. C++——运算符的重载---以成员函数方式重载---以友元函数方式重载

    一.运算符的重载 1.运算符的重载 允许把标准运算符(如+ - * /等运算符)应用于自定义数据类型的对象,可以提高程序的可读性,运算符的重载本质上还是函数重载.运算符仅仅是语法上的方便,它是另一种函 ...

  5. C++运算符重载形式--成员函数or友元函数?

    1.C++操作符重载形式-成员函数or友元函数 1.对运算符重载,需要坚持四项基本原则: 不可臆造运算符: 运算符原有操作数的个数.优先级和结合性不能改变: 操作数中至少一个是自定义类型: 保持重载运 ...

  6. 运算符重载为成员函数,友元函数

    重载运算符是函数重载的一种, 针对类对象进行操作,重载的函数中至少有一个是类对象 int operator +(ass numone, int num){...} 重载为类的成员函数, 单目运算符重载 ...

  7. 【C++的探索路8】运算符重载为友元以及可变长数组程序编写

    本篇文章内容首先对运算符重载为友元进行介绍,由于运算符重载这部分内容相对比较多,在结束友元的介绍后,通过一个综合性的小练习对前面的重载部分内容进行一个总结回顾. 运算符重载为友元 由前面关于友元的内容 ...

  8. C++运算符重载(成员函数方式)

    一.运算符重载 C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作.如果将C++中这些现存的运算符直接作用于用户自定义的类型数据上,会得到什么样 ...

  9. 运算符重载的非成员函数形式

    运算符重载为非成员函数的规则: 函数的形参代表依自左至右次序排列的各操作数 重载为非成员函数时 参数个数 = 原操作数个数(后置++.--除外,它们仍然为了区分前置++.--要强行加个int) 至少应 ...

最新文章

  1. 通配符?子字符串匹配主字符串次数_突破LeetCode,拿BAT大厂offer之《正则表达式匹配》(动态规划)...
  2. 雷军的“初恋”回来了
  3. 使用Windows Azure创建移动服务
  4. 优化器 - tf.keras.optimizers.SGD()【TensorFlow2入门手册】
  5. Spring MVC @ModelAttribute 详解
  6. 新东方mti百科知识pdf_20南航翻硕mti初试417上岸经验贴
  7. 鸿蒙OS电脑体验,华为鸿蒙OS体验抢先曝光!有多个更新版本,界面和安卓完全不同...
  8. Struts入门经验(二)
  9. php 请求值中的魔术字符串
  10. ERP 集成常见的类型
  11. IOS开发之宏的深度学习
  12. 利用dlib和opencv建立人脸识别数据集并进行人脸识别
  13. 基于MyEclipse+JSP+Mysql+Tomcat开发得塞北村镇旅游网站设计
  14. 学生使用腾讯云搭建个人网站
  15. 苹果系统升级服务器,苹果操作系统升级 正式挥别PowerPC
  16. 网上购物网站建设方案
  17. 2021春节红包活动平台大全 春节平台集卡活动汇总
  18. 电容的种类与用途,基本知识
  19. 使用Python连接阿里云盘
  20. 美国英文简写日期格式转换

热门文章

  1. STM32和GD32有什么区别?
  2. 踩内存是什么意思啊_草坪到底能不能踩
  3. OpenGL渲染STL三角网格模型
  4. 关于昨天听直播的一点胡想
  5. 80后幽默语录100条
  6. resttemplate返回类型_RestTemplate 详解
  7. 第四周总结(文件属性正则符号三剑客 )
  8. nacos 0.7 配置管理
  9. java题 答案是玫瑰花,《长腿的玫瑰》阅读练习及答案(2019年湖北省十堰市中考题)...
  10. cn_win_srv_2003_r2_standard_with_sp2_vl_cd1_X13-46532.iso 序列号密匙