个人专栏:
算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客
Java基础:Java基础_IT闫的博客-CSDN博客
c语言:c语言_IT闫的博客-CSDN博客
MySQL:数据结构_IT闫的博客-CSDN博客
数据结构:数据结构_IT闫的博客-CSDN博客
C++:C++_IT闫的博客-CSDN博客
C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客
基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客
python:python_IT闫的博客-CSDN博客
欢迎收看,希望对大家有用!
目录
第一题:
第二题:
第三题:
答案:
第一题:
第二题:
第三题:
设计一个复数类Complex,包含成员变量实部real和虚部imag;运算符重载+/-实现两个复数加、减的功能。在主函数里创建两个复数对象,分别求两个复数的和与差,在主函数里显示运算结果。效果如图:
现有一学生类定义:
class Student{
……..
private:
int _id;
string _name;
char *_addr;
};
实现学生类的赋值运算符=重载,主函数调用赋值运算符并输出对象信息。
编写一个程序,声明一个2行2列矩阵类Matrix,重载运算符“+”,使之能用于矩阵的加法运算。重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入与输出。从键盘输入两个矩阵a和b,求两个矩阵之和并输出。效果如图:
#include
using namespace std;
class Complex {
private:
double real;
double imag;
public:
Complex(double x=0,double y=0):real(x),imag(y) {}
void show() const; //输出数据
friend Complex operator+(const Complex& a1, const Complex& a2) ; //重载为类的友元函数
friend Complex operator-(const Complex& a1, const Complex& a2);//重载为类的友元函数
};
/******************************************************************/
void Complex::show() const {
if(imag>=0)
cout<
#include
#include
using namespace std;
class Student {
private:
int _id;
string _name;
char *_addr;
public:
Student(int id,string name,const char *addr);
Student();
Student& operator=(Student& stu);
void show();
};
Student::Student() {}
Student::Student(int id,string name,const char *addr) {
/******************************************/
_id=id;
_name=name;
this->_addr=new char[strlen(addr)+1];
if(_addr) strcpy(_addr,addr);
/******************************************/
}
Student& Student::operator=(Student& stu) {
//注意深拷贝
/******************************************/
_id=stu._id;
_name=stu._name;
_addr=new char[strlen(stu._addr)+1];
if(_addr) strcpy(_addr,stu._addr);
return *this;
/******************************************/
}
void Student::show() {
cout<<"学号:"<<_id<
#include
#include
using namespace std;
class Matrix {
private:
int a[2][2];
friend istream& operator>>(istream& is,Matrix& _m);
friend ostream& operator<<(ostream& os,Matrix& _m);
friend Matrix operator+(const Matrix& mat1,const Matrix& mat2);
};
ostream& operator<<(ostream& os,Matrix& _m) {
//每个数4列 setw(4)
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++)
os<>(istream& is,Matrix& _m) {
for(int i=0; i<2; i++)
for(int j=0; j<2; j++)
is>>_m.a[i][j];
return is;
}
Matrix operator+(const Matrix& mat1,const Matrix& mat2) {
Matrix mat;
for(int i=0; i<2; i++)
for(int j=0; j<2; j++) {
mat.a[i][j]=mat1.a[i][j]+mat2.a[i][j];
}
return mat;
}
/****************************************************/
int main() {
Matrix m1,m2,m;
cout<<"input matrix m1:"<>m1;
cout<<"input matrix m2:"<>m2;
m=m1+m2;
cout<<"output matrix m:"<