1.1 抽象和類
1,定義:類是一種將抽象轉換為使用者自定義型別的c++工具,他將資料表示和操縱資料的方法組合成乙個整潔的包。
2,類的開發和編寫使用該類的程式
c++程式將介面(類定義)放在標頭檔案中,並將實現(類方法的**)放在源**檔案中。
2.1 類定義
類宣告的例項**:
建立名為stock.h的標頭檔案
//使用infdef來防止同一檔案的多重包含
#ifndef stock_h
#define stock_h
#includeclass stock
public:
stock();
stock(const std::string &co,long m, double n);
~stock();
void buy(long num, double price);
void sell(long num, double price);
void update(double price);
void show();
};#endif
**解釋:
1,訪問控制
private和public描述了對類成員的訪問控制。使用類物件的程式可以直接訪問共有部分,但只能通過共有成員函式來訪問物件的私有成員。因此,共有成員函式是程式和物件的私有成員之間的橋梁,提供了物件和程式之間的介面。
注意:資料項通常放在私有部分,描述不屬於共有介面實現細節的成員函式也放在私有部分,只有組成類介面的成員函式放在公有部分。
例項中的set_tot()屬於私有成員函式。
2,建構函式
定義:對於乙個類而言只有對其定義了建構函式其才能想c++中自定義的資料型別一樣進行初始化。類建構函式專門用於構造新物件、將值賦值給他的資料成員。
使用:建構函式是一種特殊的成員函式,在建立類物件時被呼叫;
建構函式的名稱和類名相同,但通過函式的過載可以建立多個同名的建構函式,條件是每個函式的引數都不同(例項中便建立了兩個建構函式);
建構函式沒有宣告型別;
需要注意的是,如果程式中沒有提供任何建構函式則編譯器會為程式定義乙個預設建構函式,此時的建構函式是無引數的。
建構函式的引數表示的不是類成員,而是賦給類成員的值。因此引數名不能與類成員相同。
3,析構函式
定義:用建構函式建立物件後,程式負責跟蹤該物件,知道其過期為止。物件過期時,程式將自動呼叫乙個特殊的成員函式:析構函式,負責清理工作~stock();
析構函式也可以沒有返回值和宣告型別
析構函式沒有引數
因為析構函式是程式在物件過期時自動呼叫的所以通常不在**中顯示的呼叫析構函式
如果物件是使用new建立的,則其將駐留在棧記憶體或自由儲存區中,當使用delete來釋放記憶體時,其析構函式將自動被呼叫。
2.2 實現類成員函式
建立名為stock.cpp的實現檔案:
1,使用類中完成了物件的建立、複製等操作。#include#include"stock.h"
stock::stock()
stock::stock(const std::string &co, long m, double n)
else
shares = m;
share_val = n;
set_tot();
}stock::~stock()
void stock::buy(long num, double price)
else }
void stock::sell(long num, double price)
else if(num>shares)
else
}void stock::update(double price)
void stock::show()
std::cin.get();
std::cin.get();
return 0;
}
2,需要注意的是,下面兩條語句有根本性的差別:
stock stock1 = stock("zhai",12,2.0);
stock1 = stock("zhaiandzhao",30,8.0);
第一條語句是初始化,他建立有指定值的物件,可能會建立臨時物件也可能不會;第二條是賦值語句,像這種在賦值語句中使用建構函式總會導致在複製前建立乙個臨時物件。
具體表現形式便是,前乙個語句的執行結果可能不會出現析構函式中的語句,而後乙個語句肯定會執行析構函式。
3,const函式
注意,以後只要類方法不會修改呼叫物件,就應將其宣告為const,例項中的show()函式就是這樣的
void stock::show() const
C 語言學習記錄 12 類和物件
c 被稱作物件導向的語言,那麼乙個很重要的問題就是什麼是物件。物件 object 就是指乙個物品或一件事物。同時,這個事物有自己的屬性和操作特點。乙個圓可以被看作物件,那麼它所含的屬性就有半徑 座標 面積,可以進行的操作就有改變它的位置 把一本書看作乙個物件,那麼它的屬性就是質量 頁數 字元數 長寬...
C語言學習筆記之C 物件導向
include include includevoid main void display cout num 所謂的繼承就是在乙個已存在的類基礎上建立乙個新的類。已存在的類稱為基類 父類 新建的類稱為 派生類或子類 派生類或子類繼承了父類所有資料成員和成員函式,並增加新的成員。公用派生類 inclu...
C語言學習之常量
1.整型常量 像123這一型別常量如無特別說明都是int型別常量。long型常量要以l或l結尾,比如123456789l。無符號常量要以u或u結尾。整型常量除了用十進位制表示外,還可以用八進位制和十六進製制表示,八進位制前面加0 零 十六進製制前面加0x。2.字元常量 字元常量用 表示,比如 y 本...