面向对象 - 运算符重载与友元函数

第1关:复数运算

在右侧编辑器中的Begin-End之间补充代码,设计一个复数类( Complex ),该类有两个成员变量和两个函数(成员变量访问性为私有,函数为公有),并重载+,-,*运算符,实现复数的加、减、乘运算,具体要求如下:

成员变量:float real,代表实部。

成员变量:float image,代表虚部。

构造函数:Complex(float r,float i),用两个参数设置 real 和 image 成员变量的值。

输出复数函数:void Print(),输出格式为:实部 +/- 虚部i,比如1+1i,0−5i。

#include 

using namespace std;



/********* Begin *********/

class Complex

{

    //复数类的声明

    public:

    friend Complex operator+(const Complex& p1,const Complex& p2);

    friend Complex operator-(const Complex& p1,const Complex& p2);

    friend Complex operator*(const Complex& p1,const Complex& p2);

    Complex(float r,float i)

    {

        real=r;

        image=i;

    }

    void Print()

    {if(this->image>=0)

    {

        cout<real<<"+"<image<<"i"<real<image<<"i"<

运行结果图:

面向对象 - 运算符重载与友元函数_第1张图片

                          图1 **运行结果图

第2关:病毒复制

在右侧编辑器中的Begin-End之间补充代码,设计病毒类( Virus ),实现病毒检测功能,具体要求如下:

成员变量:int Gen,代表当前病毒对象的年龄,默认值为 0。

拷贝构造函数:Virus(const Virus &v),拷贝到一个新的病毒对象时,并将新的病毒对象的成员变量年龄在原来病毒对象的年龄上加 1。

重载==运算符:bool operator==(const int& g,const Virus &v),用来比较g==virus[i],以找出年龄为参数 g 的病毒,并统计计数。

/********* Begin *********/
class Virus
{
    //病毒类的声明
    public:
    int Gen;
    Virus(const Virus &v);
    Virus();

};
//病毒类的定义以及其他内容
Virus::Virus(){//构造函数

}
bool operator == (const int &g,const Virus &v1){
    if(v1.Gen == g){
        return 1;
    }else
        return 0;
}

Virus:: Virus(const Virus &v){
    this -> Gen=v.Gen+1;
}

/********* End *********/

面向对象 - 运算符重载与友元函数_第2张图片

第3关:学生信息转换

在右侧编辑器中的Begin-End之间补充代码,设计学生和教师两个类,类中成员变量都为私有,成员函数都为公有,并实现它们之间的转换,具体要求如下:

学生类( Student )

编号:int number

姓名:string name

性别:string sex

带参构造函数:Student(int num,string nam,string se),用三个参数对应初始化内部的三个成员变量。

输出函数:void Print()函数,输出学生信息,格式为:学生:name,编号:number,性别:sex。

教师类( Teacher )

与 Student 类有三个同样的成员变量

输出函数:void Print(),输出教师信息,格式为:教师:name,编号:number,性别:sex的格式打印三个成员变量。

转换构造函数,用于从 Student 类转换到 Teacher 类,它将 Student 对象的成员变量对应复制 Teacher 对象的成员变量中。

#include 
#include 
using namespace std;

/********* Begin *********/
// 前置声明 Teacher 类
class Teacher;

class Student
{
    //学生类的声明
    friend Teacher;
    public:
    Student();
    void Print();
    Student(int num,string nam,string se);
    private:
    int number;
    string name;
    string sex;
    
};
//学生类的定义
Student::Student(){
 
}
 Student::Student(int num,string nam,string se)
 {
     number=num;
     name=nam;
     sex=se;
 }
void Student::Print()//返回类型放在类名前
{
    cout<<"学生:"<

面向对象 - 运算符重载与友元函数_第3张图片
4关:矩阵运算

在右侧编辑器中的Begin-End之间补充代码,设计一个矩阵类( Matrix ),并实现矩阵的简单运算,具体要求如下:

成员变量:这一部分学员可以自由发挥,但要求都是私有成员。

成员函数:

构造函数:Matrix(int r,int c),参数 r 和 c 分别代表矩阵的行和列。

全部设值函数:void Fill(int value),函数将矩阵内所有的元素都设置为参数 value 的值。

指定位置设值函数:void Set(int r,int c,int value),函数将矩阵第 r 行 c 列的元素设置为 value 的值。

获取元素函数:int Get(int r,int c)函数,函数返回矩阵第 r 行 c 列的元素。

打印函数:void Print(),函数按照矩阵的形状打印出矩阵内容,每一个值后跟着一个空格。比如一个2x4元素全为1的矩阵,打印结果为(更明显表示格式,空格均用下划线_代替):

1_1_1_1_

1_1_1_1_

普通函数:

Matrix operator+(Matrix &m1,Matrix &m2)函数,重载Matrix类的加法运算符,实现矩阵的加法运算。

Matrix operator-(Matrix &m1,Matrix &m2)函数,重载Matrix类的减法运算符,实现矩阵的减法运算。

Matrix operator*(Matrix &m1,Matrix &m2)函数,重载Matrix类的乘法运算符,实现矩阵的乘法运算。

#include 
#include 
using namespace std;

/********* Begin *********/
class Matrix
{
    //矩阵类的声明
    friend Matrix operator+(Matrix &m1,Matrix &m2);
    friend Matrix operator-(Matrix &m1,Matrix &m2);
    friend Matrix operator*(Matrix &m1,Matrix &m2);
      public:
    Matrix();
    Matrix(int r,int c);
void Fill(int value);
void Set(int r,int c,int value);
int Get(int r,int c);
void Print();
    private:
    int row;
    int colum;
    int v[100][100];//注意命名时不要重名
    
};
//矩阵类的定义
Matrix:: Matrix(){}
Matrix::Matrix(int r,int c)
{
    row=r;
    colum=c;
}
void Matrix::Set(int r,int c,int value)
{
    this->v[r][c]=value;
}

void Matrix::Fill(int value)
{
    
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < colum; j++)
        {
            v[i][j] = value;
        }
    }
    return;
}

int Matrix:: Get(int r,int c)
{
    return v[r][c];
}
void Matrix::Print()
{
    int i,j=0;
for(i=0;i

面向对象 - 运算符重载与友元函数_第4张图片

你可能感兴趣的:(c++,算法)