抽象和類
(1)c++程式設計師將介面(類定義)放在標頭檔案中,並將實現方法(類方法的**)放在源**檔案中;
(2)類名的首字母大寫;private 成員函式,編寫這個類的人可以使用它,但是編寫**來使用這個類的人不能使用;
(3)內聯函式:定義位於宣告中的函式將自動成為內聯函式;類宣告常將短小的函式作為內聯函式;
(4)類宣告類似於結構宣告,可以包括資料成員和函式成員,在私有部分private中宣告的成員只能通過成員函式進行訪問,在公有部分public中宣告的成員可被使用類物件的程式直接訪問;
class
classname
;
(5)實現類成員函式,可以在類宣告中提供完整的函式定義,而不是函式原型,但是通常的做法是單獨提供函式定義(除非函式很小),在中情況下,需要使用作用域解析運算子倆指定成員函式屬於哪個類。
(6)建構函式,專門用於構造新的物件,將值賦給它們的資料成員;
預設建構函式:
stock::stock()
stock first; //calls default constructor implicitly
stock fitst=stock(); //calls it explicitly
stock *second=new stock; //calls it implicitly
(7)析構函式:當物件過期時,程式自動呼叫析構函式完成清理工作;析構函式在類名字前面加上~;如:stock類的析構函式為~stock();析構函式沒有返回型別(連void也沒有),也沒有引數;如果建構函式使用了new,則必須提供使用delete的析構函式;
如果程式設計師沒有提供析構函式,編譯器將隱式的宣告乙個預設的析構函式,並發現導致物件被刪除的**後,提供預設析構函式的定義;
程式執行析構函式時:由於自動變數存放在棧中,因此最後建立的物件最先被刪除,最先建立的物件將最後刪除;
(8)c++11列表初始化
stock hot_tip=;
stock jock;
stock temp{};
(9)const 成員函式:
void stock::show() const ; //promises not to change invoking object
函式定義的開頭:
void stock::show() const
//promises not to change invoking object
const stock & stock::topval(const stock & s) const
const stock *top=stock1.topval(stock2); //將this指標設定成stock1物件的位址;
類作用域
在類中定義的名稱的作用域都為整個類,作用域為整個類的名稱在該類中是已知的,在類外是未知的;因此要呼叫公有函式必須通過物件;在定義成員函式時,必須使用作用域解析運算子;
void stock::update(double price)
運算子過載
(1)不要返回指向區域性變數或臨時物件的引用,函式執行完畢後,區域性變數和臨時變數將消失,引用將指向不存在的資料。
(2)operator+( )
,在運算子表示法中,運算子左側的物件是呼叫物件,運算子右邊的物件是作為引數被傳遞的物件。
友元函式
(1)建立友元:friend time operator*(double m,const time & s);
編寫定義:因為它不是成員函式,所以不能使用time::限定符,不要在定義中使用friend關鍵字
time operator*(double m,const time & s)
(2)要過載《運算子來顯示c_name的物件,可使用乙個友元函式:
ostream & operator(ostream & os,const c_name & obj)
如:cout< 類和物件 運算子過載 3 遞增運算子過載
作用 通過過載遞增運算子,實現自己的整型資料 include include using namespace std 自定義整型 class myinteger 過載前置 運算子 myinteger operator 返回引用為了一直對乙個資料進行遞增操作 過載後置 運算子 myinteger op...
運算子類過載
類過載格式 函式型別 operator 運算子名稱 形參表 型引數 使用引數 1 使用 號實現複數相加 不使用類過載 include using namespace std class complex complex double r,double i complex complex add com...
運算子過載 類的賦值運算子過載
下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...