第6章 繼承與派生

2021-04-19 06:26:36 字數 3169 閱讀 9323

1。繼承的作用是什麼?

它可以允許不同的類以多種不同的方法共享**。

2。解釋多型,什麼是多型?如何使用多型。

3。解釋動態繫結與靜態繫結的區別?描述各自的試能條件。

動態繫結:即執行的時候的繫結,多型就是這樣的。解決了執行的時候方法的間接呼叫。

靜態繫結:針對方法的直接呼叫(不通過指標或者引用)仍然是由編譯器進行解析的。

4。如何覆蓋基類的乙個方法?

當基類中的乙個虛函式在派生類中也存在並且函式簽名相同時,我們就說派生類中的版本覆蓋了基類中的定義。

5。什麼是純虛函式?其主要用途是什麼?

6。什麼是抽象類?它有什麼用途?有什麼操作可以針對實體類進行卻不能針對抽象類進行?

7。某個基類函式被隱常的含義是什麼?什麼可以引起此種情況的發生?

8。哪些成員函式無法從基類函式進行繼承?解釋其原因。

①拷貝建構函式②拷貝賦值函式③析構函式

如果類沒有明確定義拷貝建構函式和拷貝賦值函式,編譯器會預設為這個類生成。

編譯器也會預設為析構生成乙個預設的析構函式。

#include

#include "student.h"

student::student(qstring nm, long id,qstring major,int year)

:m_name(nm)

,m_major(major)

,m_studentid(id)

,m_year(year){}

qstring student::getclassname() const

qstring student::tostring() const

undergrad::undergrad(qstring name, long id,qstring major,int year)

:student(name, id, major, year){}

qstring undergrad::getclassname() const

gradstudent::gradstudent(qstring name, long id, qstring major, int year, gradstudent::support support)

:student(name,id,major,year),

m_support(support){}

qstring gradstudent::tostring() const

qstring gradstudent::getclassname() const

qstring gradstudent::supportstr(support support)

static qtextstream cout(stdout,qiodevice::writeonly);

void graduate (student* student);

graduate(&us);

graduate(&gs);

return a.exec();

}void graduate (student* student)

#include

/* duo tai pai sheng*/

class student

private:

qstring m_name;

qstring m_major;

long m_studentid;

protected:

int m_year;

}; class undergrad : public student ;

class gradstudent : public student ;

gradstudent(qstring name, long id, qstring major, int year, support support);

qstring getclassname() const;

qstring tostring() const;

protected:

static qstring supportstr(support sup);

private:

support m_support;

}; 多型派生6-8

#include

using namespace std;

class a

virtual void bar()

class b:public a

void bar()

};return a.exec();

}多型派生6-9

#include

using namespace std;

class a

};class b:public a

};class c:public b

};return a.exec();

}多型派生6-10

base.h

#include

using namespace std;

class base;

};class derived : public base ;

base.cpp

#include "base.h"

base::base()

void base::c(bool condition)

void base::a()

void base::b()

derived::derived()

void derived::a()

void derived::b()

void derived::c()

cout << "objects created" << endl;

b.b();/*derived::b*/

cout << "calling derived methods" << endl;

d.a();/*derived::a*/

d.b();/*derived::b*/

d.c();/*derived::c*/

cout << ".. via base class pointers..." << endl;

base* bp = &d;

bp->a();/*base::a*/

bp->b();/*derived::b*/

bp->c();/*base::c*/

return a.exec();

}

實驗6 類的繼承與派生

實驗6 類的繼承與派生 一 實驗目的 1 掌握繼承和派生的定義,派生類的定義方法和繼承方式。2 掌握派生類中的建構函式的使用。3 掌握多重繼承的概念 定義方法 多重繼承派生類建構函式的執行順序。4 掌握虛基類的概念和定義方法。二 實驗內容 定義乙個基類有姓名 性別 年齡 再由基類派生出教師類和學生類...

實驗6 類的繼承與派生

實驗內容 1 程式功能 定義乙個矩形類,其中包括如下內容。保護資料成員 float length,width 矩形的長度與寬度 公有成員函式 建構函式 初始化矩形的長度與寬度 float area 計算面積 void disp 顯示結果 矩形的面積 利用矩形類為基類公有派生長方體類,其中包括如下內容...

派生與繼承 多重派生

1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...