1.定义复数类,将运算符“+”重载为复数的友元函数实现两个复数相加。
源代码
#includeusing namespace std; class Complex { private: double real,imag;//首先定义实部虚部 public: Complex(double r=0,double i=0):real(r),imag(i){}//参数表可以初始化与构造融为一体 void show() { cout<<"("< =0)cout<<'+';//注意虚部要根据正负调整格式 cout< 2. 编写程序,定义抽象基类Shape(形状),其中有一虛函数show(显示单个图形的面积,showTotal显示总面积。定义一个静态数据成员totalArea,存放派生的所有图形的面积。由它派生出2个派生类: Circle(圆 形)和Rectangle(矩形),要求显示所有图形的总面积。源代码
#includeusing namespace std; const double PI = 3.1415926; class Shape { public: //成员函数全为虚,无操作也要加中括号表示空 virtual ~ Shape(){}; virtual void show()=0;//纯虚函数 static double totalarea;//定义该类的静态变量 static void showtotalarea()//静态变量的调用要用静态成员函数调用 { cout<<"总面积为:"< 3. 建立一个point (点)类,包含数据成员x,y (坐标点)。以它为基类,以保护方式派生出一个circle (圆)类,增加数据成员r半径。再以circle类为直接基类,私有方式派生出一个cylinder (圆柱体)类,增加数据成员h(高)。要求对cylinder类重载运算符“<<” ,使之能输出cylinder类对象。源代码
#includeusing namespace std; class point { protected://便于派生类直接访问避免嵌套调用函数 double x,y; public: point(double a=0,double b=0):x(a),y(b){}//参数表构造赋值一体化 }; class circle:protected point//注意保护继承中派生类可访问基类的public与protected { protected://便于派生类直接访问避免嵌套调用函数 double r; public: circle(double a=0,double b=0,double c=0):point(a,b),r(c){}//参数表构造赋值一体化 }; class cylinder:private circle//注意私有继承派生类可以访问基类的public和protected { protected://便于派生类直接访问避免嵌套调用函数 double h; public: cylinder(double a=0,double b=0,double c=0,double d=0):circle(a,b,c),h(d){}//参数表构造赋值一体化 friend ostream& operator << (ostream& output,const cylinder& A);//友元运算符重载函数的声明 }; int main() { cylinder A(1.2,2.4,3.6,4.8); cout< 4. 设计并测试类Point,其数据成员是直角坐标系的点坐标。友元函数distance用来计算两点间的距离源代码
#include简答题#include //调用sort using namespace std; class Point { private: double x,y; public: Point(double a=0,double b=0):x(a),y(b){}//参数表使构造赋值一体化 friend double distance(const Point &A,const Point &B);//友元函数声明 }; int main() { Point A(1.0,1.0); Point B(2.0,2.0); double ans=distance(A,B); cout< 简述派生类在继承基类的时候,有几种不同的继承方式,以及这些继承方式的特点。答:派生类在继承基类的时候有着三种继承方式分别是:公有继承、私有继承和保护继承。公有继承的特点是在派生类当中派生类可以访问基类中的所有数据成员和成员函数,在类外也可以访问。私有继承的特点是在派生类当中仅仅能对基类public和protected中的数据进行访问,对于基类当中private数据无法访问,在类外无法访问基类中的任何数据。保护继承的特点是在派生类当中派生类可以方位基类当中的protected和public数据,对于基类的private数据无法访问,在类外无法访问基类中的私有和保护数据。
什么是多态,如何理解编译时多态和运行时多态?多态指的是一个名字可以有多种语义。多态分为静态多态与动态多态。静态多态是指在一个类或者一个函数中存在的同名函数,他们可根据参数表(类型及个数)区别语义,并通过静态联编实现,例如在一个类中定义的不同参数的构造函数以及运算符重载函数等。动态的的多态是指定义在一个类层次中的不同类中的重载函数,他们一般具有相同的参数表,因为要根据指针指向的对象所在的类来区别,如虚函数,它通过动态联编实现。



