文章目录
- qm-add函数的重载
- qm类与对象-圆形
- qm继承与派生(矩形和正方形)
- qm-计算不同形状周长
- qm运算符重载-复数
qm-add函数的重载
通过同名的add函数实现数据求和。
#include <iostream>
using namespace std;
int add(int a,int b){return a+b;}
double add(double a,double b){return a+b;}
char add(char a,int b){return a+b;}
int main()
{
cout<<add(2,5)<<endl;
cout<<add(4.6,-1.4)<<endl;
cout<<add('A',32)<<endl;
return 0;
}
qm类与对象-圆形
给出圆的半径,圆心坐标以及待判点的坐标,以面向对象的方式判断圆和点的关系,其中圆上的点算入圆内。在圆内则输出1,否则输出0。
#include<iostream>
using namespace std;
class Point
{
public:
double x,y;
void getXY(double x,double y){this->x=x;this->y=y;}
};
class Circle
{
public:
double R;
double x,y;
void getR(double r){R = r;}
void getXY(double x,double y){this->x=x;this->y=y;}
bool Judge(Point aa)
{
double tmp = (aa.x-x)*(aa.x-x)+(aa.y-y)*(aa.y-y);
return tmp<=R*R;
}
};
int main()
{
Circle c1;
Point p1;
c1.getR(10);
c1.getXY(0,0);
p1.getXY(5, 5);
if (c1.Judge(p1) == true)
cout << "1";
else
cout << "0";
return 0;
}
qm继承与派生(矩形和正方形)
根据所给代码和输入输出将代码补充完整。
1、设计一个程序满足以下要求:
1) 矩形类(Rectangle),有长(length)和宽(width),有计算其面积的函数Area(),并设其为虚函数。
2) 以 Rectangle 类为基类派生一个长方体类( Cuboid),增加高(height)。有与基类相同的覆盖函数 Area(),计算该长方体的表面积。
3) 另外,以 Rectangle 类为基类派生一个正方体类(Cube),其中有变量side 可选择以长(length)为边(1)或以宽(width)为边(2)。
有与基类相同的覆盖函数Area(),计算该正方体的表面积。
#include <iostream>
using namespace std;
class Rectangle
{
protected:
double length, width;
public:
Rectangle(double len, double wid):length(len),width(wid){}
virtual double Area(){ return length*width;}
};
class Cuboid:public Rectangle
{
public:
double height;
Cuboid(double a,double b,double c):
Rectangle(a,b){height=c;}
double Area()
{
return height*width*2+height*length*2+width*length*2;
}
};
class Cube:public Rectangle
{
public:
Cube(double l,double w,double s):Rectangle(l,w){side=s;}
double Area()
{
if(side==1) area=length*length*6;
if(side==2) area=width*width*6;
}
private:
double side,area;
};
int main()
{
Rectangle* rectArray[4];
rectArray[0] = new Rectangle(2,3);
rectArray[1]=new Cuboid(2,3,4);
rectArray[2] = new Cube(2,3,1);
rectArray[3] = new Cube(2,3,2);
double areaSum=0.0;
for(int i=0; i < 4; i++)
areaSum += rectArray[i]->Area();
cout<< areaSum << endl;
for(int i=0; i < 4; i++)
delete rectArray[i];
return 0;
}
qm-计算不同形状周长
shape类是一个表示形状的抽象类,length()为求图形周长的函数,total()则是一个通用的用以求不同形状的图形周长总和的函数。请从shape类派生圆形类(triangle)、矩形类(rectangle),并给出具体的求周长函数。通过主函数的功能测试。
#include <iostream>
using namespace std;
const float pi = 3.14;
class shape
{
public:
virtual float length( )=0;
};
float total(shape *s[],int n)
{
float sum=0.0;
for(int i=0;i<n;i++)
sum+=s[i]->length( );
return sum;
}
//请定义圆形类和矩形类
class circle:public shape
{
public:
float R;
circle(float r){R=r;}
float length()
{
return 2.0*3.141595*R;
}
~circle(){}
};
class rectangle:public shape
{
public:
float L,W;
rectangle(float l,float w){L = l;W = w; }
float length()
{
return (L+W)*2;
}
~rectangle(){}
};
int main()
{
float w,h,r;
cin>>w>>h;
cin>>r;
rectangle rec(w,h);
circle cir(r);
shape *s[2] = {&rec,&cir};
cout<<total(s,2);
return 0;
}
qm运算符重载-复数
定义复数类的加法与减法,同时能够输出复数对象,执行如下运算:
Complex a(2,5),b(7,8),c(0,0);
c=a+b;
c=a-b;
#include<iostream>
using namespace std;
class Complex{
public:
Complex(double r=0, double v=0):real(r),virt(v){}
Complex operator+(const Complex &op);
Complex operator-(const Complex &op);
friend ostream& operator<<(ostream& out, Complex& a);
private:
double real;
double virt;
};
Complex Complex::operator+(const Complex &op)
{
Complex tep;
tep.real = real + op.real;
tep.virt = virt + op.virt;
return tep;
}
Complex Complex::operator-(const Complex &op)
{
Complex tep;
tep.real = real - op.real;
tep.virt = virt - op.virt;
return tep;
}
ostream& operator<<(ostream& out, Complex& a)
{
out<<a.real<<"+"<<a.virt<<"i"<<endl;
return out;
}
int main(){
Complex a(2,5), b(7,8), c(0,0);
c = a+b;
cout <<c;
c = a-b;
cout <<c;
}