1 類和類之間的關係
#include
using
namespace std;
classa}
;// 1 包含關係 b has a
class
b
a a;};
//2 依賴關係 c use a
classc}
;//3 繼承關係 d extend a
classd:
public a};
intmain
(void
)
執行結果
funca()
funca()
2 繼承的訪問方式#include
using
namespace std;
class
parent
;//1 類的公有繼承
class
child1
:public parent};
//2 類的保護繼承
class
child2
:protected parent};
//3 類的私有繼承
class
child3
:private parent};
class
subchild1
:public child3
};
3 類的相容性賦值原則#include
using
namespace std;
class
parent
int a;};
class
child
:public parent};
void
print
(parent *p)
intmain
(void
)
執行結果
parent printp()
parent printp()
pp->a =
10parent printp()
parent printp
()
4 繼承的構造和析構#include
using
namespace std;
class
parent
~parent()
void
printa()
private
:int a;};
class
son:
public parent
~son()
void
printb()
void
printab()
private
:int b;
char
*name;};
void
test1()
intmain
(void
)
執行結果
parent
(int a)
son(
int a,
int b)
a =20
b=20
~son()
~parent
()
5父類和子類的成員變數重名#include
using
namespace std;
class
parent
int a;};
class
child
:public parent
void
print()
int a;};
intmain
(void
)
child::a10
parent :: a100
6 派生類中的static#include
using
namespace std;
classa;
//1 靜態成員變數要在類的外部初始化
int a::s =10;
classb:
public a
;int
main
(void
)
執行結果
b.s =
10b.s =
100a::s =
100
7 多繼承#include
using
namespace std;
//家具
class
furniture
;//床
class
bed:
public furniture};
//沙發
class
sofa
:public furniture};
//沙發床
class
sofabed
:public bed,
public sofa};
intmain
(void
)
執行結果
在床上睡覺
----
----
-在沙發上睡覺
----
----
-在沙發上睡覺
在床上睡覺
8 虛繼承
依然是上面的例子,如果不採用虛繼承
class
bed:
public furniture
class
sofa
:public furniture
由於fureniture中有個m變數,所以bed和sofa同時擁有了變數m
class
furniture
;
此時如果同時繼承這兩個類,則 furniture 中的m則存在二義性,即不知道該繼承那個類中的m
class
sofabed
:public bed,
public sofa
//二義性
= 50; //error: non-static member 'm' found in multiple base-class subobjects of type 'furniture':
解決方式: 採用虛繼承,這樣能讓派生類中只產生乙個子物件m
class
sofa
:virtual
public furniture
class
bed:
virtual
public furniture
//二義性--->通過虛繼承解決
sb.m =50;
cout <<
"sb.m = "
<< sb.m << endl;
執行結果
sb.m =
50
C 基礎 4 繼承和派生
在 c 中可重用性是通過繼承這一機制實現的。繼承允許我們依據另乙個類來定義乙個類,這使得建立和維護乙個應用程式變得更容易。這樣做,也達到了重用 功能和提高執行效率的效果。當建立乙個類時,不需要重新編寫新的資料成員和成員函式,只需指定新建的類繼承了乙個已有的類的成員即可。這個已有的類稱為基類,新建的類...
c 繼承和派生
通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...
C 繼承和派生
在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...