該系列是本人對c++的物件導向的知識點的筆記整理。
c++物件導向的三大特徵:封裝、繼承、多型。
類包括屬性和方法。在設計類時,屬性和方法寫在一起, 屬性和方法統稱為成員,屬性稱為成員屬性或者成員變數,行為稱為成員函式或者成員方法。
類在設計時,可以把屬性和方法放在不同的許可權下,可以對它們加以控制。
訪問許可權分為三種:
(1)公共許可權:public 特點:成員類內可以訪問,類外可以訪問。
(2)保護許可權:protected 特點:成員類內可以訪問,類外不可以訪問,子類可以訪問父類中保護的內容。
(3)私有許可權:private 特點:成員類內可以訪問,類外不可以訪問,子類不可以訪問父類的私有內容。
注意:類內的成員如果不設定指定的訪問許可權,則***系統預設設定的訪問許可權為private***。
以下是乙個關於定義立方體類的例子:
class
cube
double
getl()
double
getw()
double
geth()
//獲取立方體面積
double
calculatearea()
//獲取立方體體積
double
calculatevolume()
};
在設計類時,可以把類的宣告放在乙個標頭檔案(***.h)中,把類的成員函式的實現放在乙個***.cpp檔案中。
以點和圓的關係作為例子:
定義乙個點類,點是指xy座標系上的點,用(x,y)表示
class
point
//獲取x座標
intgetx()
//設定y座標
void
sety
(int y)
//獲取y座標
intgety()
};
定義乙個圓類,圓的成員屬性有圓的圓點和半徑
class
circle
//獲取半徑
intgetr()
//設定圓心
void
setcenter
(point center)
//獲取圓心
point getcenter()
};
把point類的宣告放在point.h中,把point類的成員函式的實現放在point.cpp中
#pragma once
//防止標頭檔案重複包含
#include
using
namespace std;
//點類
class
point
;
#include
"point.h"
//設定x座標
void point::
setx
(int x)
//設定類作用域
//獲取x座標
int point::
getx()
//設定y座標
void point::
sety
(int y)
//獲取y座標
int point::
gety()
把circle類的宣告放在circle.h中,把circle類的成員函式的實現放在circle.cpp中
#pragma once
#include
#include
"point.h"
//circle類內使用了point類,所以要引入point.h
//圓類的宣告
class
circle
;
#include
"circle.h"
//設定半徑
void circle::
setr
(int r)
//獲取半徑
int circle::
getr()
//設定圓心
void circle::
setcenter
(point center)
//獲取圓心
point circle::
getcenter()
主函式和全域性函式部分在main.cpp
#include
#include
#include
#include
"circle.h"
//圓類
#include
"point.h"
//點類
using
namespace std;
//判斷點和圓的關係
void
isincircle
(circle& c, point& p)
//引用型別
else
if(dis > c_dis)
else
}int
main()
物件導向之封裝
定義 影藏事物的屬性和實現的細節,僅對外提供公共的訪問方式 封裝的好處 1.隱藏了事物的細節 2.提高了 的復用性 3.提高了安全性 封裝的實現 使用private關鍵字進行修飾,被private修飾的成員只能在本類中使用 setter和getter 封裝需要搭配set和get方法 set 設定器 ...
物件導向之封裝
封裝之如何隱藏屬性 在變數名和方法名之前加雙下劃線 外部就訪問不到 classa x 1def init self,name self.name name def bar self print self.name a.x 外部無法訪問這其實是在類定義的時候,將變數名和函式名進行了變形,我們可以列印類...
物件導向之 封裝
封裝 就是把屬性或者方法裝起來 廣義 把屬性和方法裝起來,外面不能直接呼叫了,要通過類的名字來呼叫 狹義 把屬性和方法藏起來,外面不能呼叫,只能在內部偷偷呼叫 class user def init self,name,passwd self.usr name self.pwd passwd 私有的...