class class_nameobject_name; //乙個或者幾個物件的標識
class crectanglerect; //是crectangle型別的物件的名稱
crectangle 和 rect的關係就像 int 和變數a的物件一樣 int(型別名) a(物件名,變數)
如果物件需要呼叫類裡面的函式,則以下
rect.set_value(3,4)
myarea=react.area();
如何在外部定義乙個類裡面的函式?
class crectangle; //與在外部定義函式不同,唯一的區別是類會預設這裡為inliner(個人理解應該是內聯函式)
}rect;
void crectangle::set_values(int a,int b) //"::"範圍操作符,申明了被定義的成員所屬的class名稱,並賦予一定的屬性,這些屬性在類內部的訪問許可權是一樣的
int main()
};crectangle::crectangle(int a, int b) //建構函式的原型和實現中都沒有返回值(return vaule),也沒有void 型別申明。建構函式必須這樣子寫。建構函式永遠沒有返回值,也不用void宣告
int main()
b.析構函式
析構函式完成相反的功能,當物件從記憶體中釋放的時候被自動呼叫,釋放可能是因為它存在的範圍已經結束了或者是因為它是乙個動態分配的物件,而被使用操作符delete釋放了。
析構函式必須與class同名,必須無返回值。
#include
using
namespace
std;
class rectangle
};rectangle::rectangle(int a,int b)
rectangle::~rectangle() //直接呼叫,沒有返回值
int main();}
empty
constructor
它是乙個沒有任何引數的建構函式,什麼也不做:example::example(){}
copy
constructor
example::example(const example &rv) //只有乙個引數的建構函式,該引數是類的物件,這個函式的功能是將被傳入的物件(object)的所有非 靜態成員變數的值都複製給自身這個object。簡單的說就是,把exmple rect(3,4)中的3,4賦值到類裡面的變數。
這倆個預設建構函式只有在沒有在類中定義建構函式的時候才存在的。
當然也可以進行建構函式的過載
#include
using
namespace
std;
class rectangle
};rectangle::rectangle()
rectangle::rectangle(int a,int b)
rectangle::~rectangle()
int main()
int area(void)
};int main()
讀法:*x:由x指向的 。 x.y:物件x的成員 。(*x).y / x->y : 由x指向的物件的成員y。
x[0]:由x指向的第乙個物件 x[1]:由x指向的第二個物件 x[2]:由x指向的第三個物件。
類不僅可以用class定義,也可以用struct和union定義
基本上struct和class是非常相似的,倆著定義的類的唯一區別在於youclass定義的類的成員預設訪問許可權為private,而struct為public
union在同乙個時間能只能儲存乙個資料成員而已。
參考:
一 類與物件
物件的儲存細節 程式啟動,先把程式載入到 區。系統自動建立乙個類物件,載入類中的物件方法列表。當通過乙個類建立物件時,先在堆中開闢一塊儲存空間給物件p,再初始化物件的各屬性為0,最後返回乙個位址儲存到棧中 區域性變數接收 物件的第0個屬性是系統建立的isa指標,指向建立該物件的類。類方法只能類呼叫,...
python物件導向一(類和物件以及常用內建方法)
1.物件導向 需要有意義的物件導向的 不是有了類就是物件導向 核心 類 物件 方法 設計層面 函式 程式運形,過程是一種稱謂 class student name 變數 資料成員 age 0 類中的函式稱為方法 def print file self print name self.name pri...
第三章 物件導向(一) 類與物件
1 基本概念 1 過程與物件都是一種解決問題的思想。面向過程 強調的是功能行為,一種過程 先乾啥 再幹啥 物件導向 將功能封裝到物件裡,強調的是具備某功能的物件 2 物件導向的三個特徵 封裝 encapsulation 繼承 inheritance 多型 polymorphism 2 類與物件 1 ...