3.多型
class內都是成員函式,一切都放在這裡
public公共許可權 成員類內可以訪問 類外可以訪問
protected保護許可權 成員類內可以訪問 類外不可以訪問
private私有許可權 成員類內可以訪問 類外不可以訪問
struct預設許可權為公有public
class預設許可權為私有private
成員屬性設定為私有的好處:
1.可以自己控制讀寫許可權。
2.對於寫許可權,可以檢測資料的有效性。
例子:
#include
using
namespace std;
#include
//設計人類
class
person
//獲取姓名
string getname()
intgetage()
//可以進行年齡修改
void
setage
(int age)
//設定情人
void
setlover
(string lover)
private
://姓名 可讀可寫
string m_name;
//年齡 唯讀
int age;
//情人 只寫
string m_lover;};
intmain()
繼承(減少重複**)
class a:public b;
a:類稱為子類或派生類
b:類稱為父類或基類
派生類的成員,包含兩大部分:
1.一類是從基類繼承過來的,一類使自己增加的成員。
2.從基類繼承過來的表現其共性,而新增的成員體現了其個性。
繼承方式:
繼承的語法:class 子類:繼承方式 父類
三種:1 公共繼承。2 保護繼承。3私有繼承。
父類中的公共許可權成員 到子類中依然是公共許可權
父類中的保護許可權成員 到子類中依然是保護許可權
父類中的私有許可權成員 子類訪問不到
繼承中的物件模型:
1.父類中所有非靜態成員屬性會被子類繼承下去
2.父類中私有成員屬性 是被編譯器隱藏了,因此訪問不到,但確實被繼承下去了
繼承同名成員處理方式:
1.訪問子類同名成員,直接訪問即可
2.訪問父類同名成員,需要加作用域
3.當子類與父類擁有同名的成員函式,子類會隱藏父類中同名成員函式,加作用域可以訪問父類中同名函式。
例子:
#include
using
namespace std;
#include
class
base
static
void
func
(int a)};
int base::m_a =
100;
class
son:
public base};
int son::m_a =
200;
//同名靜態成員屬性
void
test01()
//同名靜態成員函式
void
test02()
intmain()
多繼承語法
(允許乙個類繼承多個類,實際開發不建議)
1.靜態多型:函式過載和運算子過載屬於靜態多型,復用函式名
2.靜態多型:派生類和虛函式實現執行時多型
3.靜態多型和動態多型區別
靜態多型的函式位址早繫結-編譯階段確定函式位址
動態多型的函式位址晚繫結-執行階段確定函式位址
例子:
#include
using
namespace std;
#include
//動物類
class
animal};
//貓類
class
cat:
public animal};
//狗類
class
dog:
public animal};
//執行說話函式
//位址早繫結 在編譯階段確定函式位址
//如果想執行讓貓說話,那麼這個函式位址就不能提前繫結,需要在執行階段進行繫結,就是位址晚繫結
//動態多型滿足條件
//1.有繼承關係
//2.子類重寫父類的虛函式
//動態多型使用
//父類的指標或者引用 指向子類物件
void
dospeak
(animal& animal)
//相當於animal& animal=cat
void
test01()
intmain()
純虛函式和抽象類
virtual 返回值型別 函式名 (引數列表)=0;
當類中有了純虛函式,這個類稱為抽象類
特點:1.無法例項化物件
2.子類必須重寫抽象類中的純虛函式,否則也屬於抽象類
虛析構和純虛析構
虛析構和純虛析構共性:
可以解決父類指標釋放子類物件。
都需要有具體的函式實現。
虛析構和純虛析構區別:
如果是純虛析構,該類屬於抽象類,無法例項化物件。
虛析構語法
virtual~類名(){}
純虛析構語法:
virtual~類名()=0;
類名::~類名(){}
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
C 物件導向
它定義了類的物件包括了什麼屬性,以及可以執行哪些操作 呼叫函式 class box 關鍵字 public 確定了類成員的訪問屬性.在類物件作用域內,類的外部是可訪問的 也可以指定類的成員為 private 或 protected box box1 宣告物件 box1,型別為 box box box2...
c 物件導向
0,類變數的申明可以不賦初始值 int 型別的為0,引用型別預設值為null,bool型別為false 1.物件導向的三大特點 封裝 0增加安全 1 良好的封裝能夠減少耦合 2 類內部的實現可以自由地修改 3 類具有清晰的對外介面 繼承 子類是乙個物件,父類的成員只是子類的引用 在繼承時子類的訪問修...