本篇博文以乙個簡單的例子來講述c++重點基礎,應該適合有一點c++基礎的童鞋。
涉及:建構函式,運算子過載,inline(內聯)函式,friend(友元)函式,this指標,引數傳遞和返回值選型,臨時物件
建構函式:
與類名相同,建立object時首先執行的函式
初始化方式很多,可以在函式體內賦值的方式初始化,也可以採用初始化列表的方式(建議採用)
運算子過載 關鍵字 operator描述,並不是所有的運算子都可以過載,限制自行查閱
在class body 已經實現的函式,比如real imag 預設就是inline函式
在定義任何乙個函式時,需要考慮到函式是否需要用const描述,主要看函式的作用是否會更改private data
傳入的引數也要注意是否用const描述,主要看引數是否會發生改變
熟悉使用const描述,會給code新增一些自行判斷是否出錯
友元函式:可以打破封裝直接訪問private data
成員函式、全域性函式
成員函式:在class body 宣告的
成員函式也可以成為inline函式,inline 描述符,最後是否成為內聯函式,要看編譯器的判斷
this 指標
誰呼叫就指向誰,比如 c1+=c2 c1呼叫"+="那麼this指標就預設指向c1,一般情況左側是this
引數傳遞和返回值型別的選擇
引數傳遞有兩種方式
by value: 值的方式傳遞
by reference: 引用傳遞,形式"***&",佔4個位元組,傳遞速度快,類似指標但不是,推薦使用
by point:指標傳遞
返回型別
void:空
int...:變數型別
***x&:reference 引用
int*:指標
全域性函式
和成員函式相比,沒有this 指標
返回值肯定不能是by reference,因為返回的是乙個local object
在這個函式中 inline complex operator + (const complex& x,const complex& y) 實際返回的是乙個臨時變數由complex( )建立
在這個函式inline complex& complex::operator +=(const complex& r)能返回reference,是因為c1+=c2,c1是已經存在的object
complex.h
#ifndef __complex__
#define __complex__
class complex
//建構函式初始化列表方式初始化data
complex& operator += (const complex&);//by reference
//引數傳遞和返回型別
double real() const //在class已經實現的是inline function
double imag() const
//在設計任何函式時,要考慮這個函式是否加const,關鍵是看這個函式是否會更改private data
~complex(){};
private:
double re,im;
/*友元函式,可以直接呼叫private data,不需要通過其他函式來取private data
友元函式可以打破封裝
相同class的各個object相互為friend 友元
*/ friend complex& __doapl (complex*,const complex&); };
#endif
complex.cpp
#include "complex.h"
#include using namespace std;
/* by value by reference
在c++程式設計中 引數傳遞和返回值 盡量使用by reference,類似指標,可以加快執行速度,佔4個位元組
*///操作符過載是成員函式或者全域性函式
/*成員函式*/
inline complex&
__doapl(complex* ths,const complex& r)
/*operator += 實際上有兩個引數,右邊加在左邊,左邊是呼叫者,右邊的是不會變的,所以是const pass by refrence
返回值 也是refrence,也申明成inlien函式,但是最後是不是inline要看編譯器的判斷
*/inline complex&
complex::operator +=(const complex& r)
//全域性函式,左右都不會改變,產生的新值不是local,不能return referen
//複數+複數,複數+實數,實數+複數
inline complex
operator + (const complex& x,const complex& y)
inline complex
operator + (const complex& x,double y)
inline complex
operator + (double x,const complex& y)
ostream&
operator << (ostream& os,const complex& x)
int main()
C 程式入門
using system class welcome 上述 中的using system表示匯入system的命名空間。然後下面的console.writeline 就可以直接使用了,如果沒有匯入system的話,就需要system.console.writeline 這樣使用了。c 要求程式中的每...
C 基礎入門
類 類是資料和函式的封裝體,類也是一種資料型別。在類中資料稱為資料成員,函式稱為成員函式。類的定義一般形式 class 類名 資料成員同結構struct中的資料是一致的,成員函式是對類的私有資料成員操作的惟一途徑。類的成員函式宣告的結構如下 型別 成員函式名 參數列 最後的分號不可以省略 成員函式定...
C 入門基礎
是 c 提供的用於輸入輸出的類和函式庫,只有包含這個標頭檔案,才能使用 cin 和 cout 等類,同時也可以使用輸入輸出函式。1.命名空間,指識別符號的可見範圍。2.using namespace std 將命名空間 std 的識別符號擴充套件到全域性 在 iostream 標頭檔案中,並沒有定義...