C 的繼承關係

2021-09-24 06:12:44 字數 2777 閱讀 4755

建立名為vehicle(車)的基類,它含有製造商的名稱(string型別)、發動機缸數(int 型別)以及車主(person型別)然後建立vehicle類的乙個派生類truck(卡車),它具有一些附加屬性,包括載重(double型別 單位:噸)和牽引力(int型別 ,單位:磅)。類應具有合理的建構函式、取值成員函式(get)、賦值成員函式(set)、乙個過載的賦值操作符以及乙個拷貝建構函式。

在主函式中編寫測試**來測試所有成員方法並按照下頁給出的宣告完成person類的定義部分。

**實現部分:

#include #includeusing namespace std;

class person

;/*車*/

class vehicele

;    vehicele(person, string, int);

vehicele(const vehicele&);//拷貝

person get_person()const;

void set_person(person);

string get_manufacturer()const;

void set_manufacturer(string);

int get_enginenum()const;

void set_enginenum(int);

vehicele& operator=(const vehicele&);

protected:

person person;

string manufacturer;//製造商

int enginenum;//發動機缸數

};//卡車

class truck :public vehicele

;person::person()

person::person(string str)

string person::getname()const

person& person::operator=(const person& p)

istream& operator>>(istream& in, person& p)

ostream& operator<

;vehicele::vehicele(person p, string a, int b)

person vehicele::get_person()const

void vehicele::set_person(person p)

string vehicele::get_manufacturer() const

void vehicele::set_manufacturer(string a)

int vehicele::get_enginenum() const

void vehicele::set_enginenum(int a)

vehicele& vehicele::operator=(const vehicele& v)

vehicele::vehicele(const vehicele& t)

truck::truck(double a, int b, person p, string s, int c) :vehicele(p, s, c)

truck::truck(const truck& t) : vehicele(t.person, t.manufacturer, t.enginenum)

double truck::get_ton()const

void truck::set_ton(double a)

int truck::get_pound()const

void truck::set_pound(int a)

truck& truck::operator=(const truck& t)

int main()

{    /*車類繼承*/

person person;

string manufacturer;//製造商

int enginenum;//發動機缸數

double ton = 0.00;//噸

int pound = 0;//牽引力

cout << "你好,請填寫你的購車資訊" << endl;

cout << "姓名、製造商" << endl;

cin >> person>> manufacturer;

cout << "發動機缸數、噸、牽引力" << endl;

cin >> enginenum >> ton >> pound;

cout << endl;

/*小車*/

vehicele vc(person, manufacturer, enginenum);

cout << vc.get_person() << "購買了一輛:" << vc.get_manufacturer() << "發動機缸數是:" << vc.get_enginenum();

/*卡車*/

truck tu(ton, pound, person, manufacturer, enginenum);

/*呼叫淺拷貝*/

truck tc(tu);

cout << tu.get_person() << "購買了一輛:" << tu.get_manufacturer() << "發動機缸數是:" << tu.get_enginenum()

<< "噸數:"<< tu.get_ton()<

C 繼承關係

繼承關係的 演示 class person public person string name,string int age,double weight public void eat double food class student person public void study double...

C 繼承關係

繼承和派生概述 繼承和派生是同乙個過程從不同角的度看 保持已有類的特性而構造新類的過程稱為繼承。在已有類的基礎上新增自己的特性而產生新類的過程稱為派生。被繼承的已有類稱為基類 或父類 派生出的新類稱為派生類 或子類 直接參與派生出某類的基類稱為直接基類。基類的基類甚至更高層的基類稱為間接基類。派生的...

c 的繼承關係總結

對於沒有虛函式的情況 1.子類物件的指標可以直接賦值給父類的指標,但位址值可能會變化,也就是可能編譯器給自動做了轉換,具體可以看下面的例子。這也是最常規的用法。如果是多層繼承,將子類的指標賦值給父類的指標時,該指標位址會自動轉換到該父類的成員的開始位址的地方。2.父類的物件的指標不能直接賦值給子類的...