C++実習(5)

16655 ワード

1.複数クラスのリロード乗算は複数クラスCOMPLEXを定義し、実部、虚部はそのプライベートデータメンバーであり、double;メンバー関数には、デフォルトの構造設定実部、虚部(0,0)があります.2つのパラメータ構造関数は実部、虚部をx、yとする.set()関数は実部、虚部をx、yとする.show()関数は、x+yjの複数の形式(例えば、0+0 j、0+1 j)を表示する.リロード加算は、別の複数のオブジェクトとの加算を実現します.メンバー関数はすべて共通です.メインプログラムを記述し、(1)オブジェクトaを定義し、(1,2)に初期化する.オブジェクトbを定義し、初期化(3,4);オブジェクトcを定義し、(0,0)に初期化し、3つのオブジェクトを順次表示する.2つの実数を入力し、bの実部虚部を再設定し、c=a+bとし、a,b,cを表示します.
#include
using namespace std;
class COMPLEX
{private:
double real,imag;
public:COMPLEX
{
real=0;imag=0;
}
COMPLEX(double r,double i)
{
real=r;imag=i;
}
void set(double r,double i)
{
real=r;imag=i;
}
void show()
{
if(imag>=0)
cout<<real<<'+'<<imag<<'j';
else
cout<<real<<'-'<<-imag<<'j';
}
COMPLEX operator+(COMPLEA &);  //       ,  +,      
}
COMPLEX COMPLEA::OPERATOR+(COMPLEX &a);  //    
{COMPLEX temp;
temp.real=this->real+a.real;
temp.imag=this->imag+a.imag;
return temp;
}
int main()
{
COMPLEX a(1,2),b(3,4),c;
double x,y;
a.show();cout<<endl;
b.show();cout<<endl;
c.show();cout<<endl;
 cin >> x >> y;
 b.set(x, y);
 c = a +b;
 a.show();
 cout<<endl;
 b.show();
 cout<<endl;
    c.show();
 cout<<endl;
 return 0;
}

2.形状類純虚関数
SHAPEクラスを定義し、ジオメトリ、x、yの位置座標がプライベートデータメンバー、doubleであることを示します.メンバー関数には、デフォルトのコンストラクション設定位置座標(0,0);2つのパラメータ構造関数はx,yを設定する.set()関数はx,y座標を設定する.area()は面積を返し,純虚関数(純虚関数のクラスを抽象クラスと呼ぶ)である.メンバー関数はすべて共通です.派生クラス-円クラスCIRCLEを定義し、上のSHAPEクラスを継承し、データメンバーradius表示半径、double、プライベートを追加します.メンバー関数には、デフォルトのコンストラクション関数があり、円心半径を0に設定します.三パラメータ構造関数は円心と半径を初期化する.set()円心と半径を設定します.area()は円の面積を返し,paiは3.14をとる.メインプログラムを作成し、CIRCLEクラスオブジェクトcを定義し、初期化位置、半径は(3,4,5)である.SHAPEポインタpを定義し、SHAPEタイプのcの参照sp 2を定義します.pは派生クラスオブジェクトcを指し、面積を計算して表示する.sp 2を参照して面積を計算して表示します.
#include
#include
using namespace std;
class SHAPE
{
double x,y;
public:SHAPE(int a,int b)
{x=a,y=b;}
SHAPE()
{x=0,y=0;}  //         (0,0)
void set(int a,int b)
{x=a,y=b;}
virtual double area()=0;  //    ,   0
};
class CIRCLE:public SHAPE
{
double radius=0;   //      radius     
public:
   CIRCLE()
   {  radius=0;
SHAPE::set(0,0);  
}   //      ,       
CIRCLE(int a,int b,int r)  //            
{
radius=r;
SHAPE ::set(a,b);
}   
void set(int a,int b,int r)
{
SHAPE::set(a,b);
radius=r;
}
double area()
{
return 3.14*radius*radius;
}
int main()
{
CIRCLE C(3,4,5);
SHAPE *P;
SHAPE &SP2=C;
P=&C;
cout<<p->area()<<endl;
cout<<sp2.area()<<endl;
return 0;
}