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...