基類:可以派生出其他的類,也稱父類
子類:從基類派生出來的類
首先理解三種訪問級別://location類
class
location
intgety()
private
:int x,y;};
void location::
initl
(int xx,
int yy)
void location::
move
(int xoff,
int yoff)
//rectangle
class
rectangle
:public location
intgetw()
private
:int h,w;};
void rectangle::
initr
(int x,
int y,
int w,
int h)
派生類物件生成時,要呼叫建構函式進行初始化。編譯器的呼叫過程是先呼叫基類的建構函式,對派生類中的基類資料進行初始化,然後再呼叫派生類自己的建構函式,對派生類的資料進行初始化工作。析構函式的呼叫正好相反。
3.1 派生類建構函式
建構函式不可以被繼承
只有當基類存在預設引數的建構函式時候,派生類才可以省略對基類建構函式的呼叫
派生類建構函式的工作:
建構函式格式:若某項的參數列為空,則該項可從成員初始化列表中省略,表示使用預設建構函式初始化該基類子物件;《派生類名》(《派生類建構函式總參數列》)
:《基類建構函式》(《參數列1>),
《子物件名》(《參數列2>)
3.2 派生類析構函式#include
classa~
a()private
:int he, we;};
classb:
public a~b
()private
: a obj1;
int len;
};
析構函式不可以被繼承
析構函式的執行順序與建構函式嚴格相反
4.1 多繼承派生類申明形式#include
classb;
b::b()
b::b
(int i)
b::~b(
)void b::
print()
const
classc:
public b
;c::c(
)c::c(
int i,
int j):b
(i)c::~c
()void c::
print()
const
void
main()
/************
輸出: b's constructor called.
c's constructor called.
5 6
c's destructor called.
b's destructor called.
****************/
4.2 多繼承建構函式格式classa:
public b2,
public b1//和此順序有關
派生建構函式存在順序:a::a(
int i,
int j,
int k,
int l):b1
(i),
b2(j),bb
(k)
4.3 二義性問題(見ppt)
c 繼承和派生
通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...
C 繼承和派生
在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...
C 繼承和派生
1 繼承概念 1 繼承是類之間定義的一種重要關係 2 基本語法 class child public parent1,public parent2 3 parent稱基類 父類 child稱派生類 子類 4 繼承方式 public,private,protected.5 重要說明 a 子類擁有父類的...