C++|継承と組合せ|A 2実験五
3103 ワード
要件:
(1)専門クラスSpecialtyを定義し、2つのプライベートデータメンバー:専門名snameと単位scoreを含むようにします.クラスのパラメータ付きコンストラクション関数と共通メンバー関数(専門名と単位を表示する関数showSp)を定義し、実装します.
(2)名前name、年齢age、専門spの3つのプライベートデータメンバーを含む学生クラスStudentを定義し、クラスの構築関数および共通メンバー関数(名前、年齢、専門の関数showStuを表示する)を定義し、実現する.
(3)main関数で上記設計をテストする.
#include
#include// + = += > ,
using namespace std;
class Student;
class Specialty
{
public:
Specialty(string sn=" ", int sc=1);// ,
void showSp() { cout << " : " << sname << " " << " :" << score<> age;
cin >> name;
}
private:
int age;
string name;
Specialty spe1;//※ ,
};
Specialty::Specialty(string sn, int sc)
{
cin >> sn;
sname = sn;
cin >> sc;
score = sc;
}
int main()
{
Student t1;
t1.showStu();
system("pause");
return 0;
}
ps:
1.speciallyクラスにパラメータが必要でない場合、コードはより簡単にできます.
2.組合せ:あるクラスのオブジェクトが別のクラスのデータメンバーになる
3.一般的な低レベルエラーに注意:
メンバー関数の忘れ();
構造関数はpublic宣言の下に書かれていない.
================================================================================================
2.クラスの継承
作成プログラムは、球、円柱、円錐の表面積と体積を計算します.要件:(1)ベースクラスの円を定義し、少なくとも1つのデータメンバーを含む:半径;(2)ベースクラスの派生クラスを定義する:球、円柱、円錐、いずれも表面積と体積を求めるメンバー関数と出力関数を含む.(3)主関数を定義し、球、円柱、円錐の和体積を求める.
#include
using namespace std;
class Circle
{
public:
Circle(double r = 0) {};// {} ,
protected:
double r;
const double PI = 3.14;
};
class Qiu:public Circle
{
public:
Qiu()
{
cout << " "<> r;
}
double volume() { return(4.0/3)*PI*pow(r, 3); }
double area() { return (4.0) * PI*r*r; }
void show() { cout << " :" << volume() << " " << " :" << area() << endl; }
};
class Zui :public Circle
{
public:
Zui()
{
cout << " "<> r;
cin >> l;//
}
double volume() { return (PI*r*r*l)/3 ; }
double area() { return PI*r*l+PI*r*r; }
void show() { cout << " :" << volume() << " " << " :" << area() << endl; }
private:
double l;
};
class Zhu : public Circle
{
public:
Zhu()
{
cout << " "<> r;
cin >> h;
}
double volume() { return h*PI*pow(r, 2); }
double area() { return 2*PI*r*(h+ r); }
void show() { cout << " :" << volume() << " " << " :" << area() << endl; }
private:
double h;//
};
int main()
{
Qiu qiu1;
Zui zui1;
Zhu zhu1;
qiu1.show();
zui1.show();
zhu1.show();
system("pause");
return 0;
}