C 入門基礎程式

2021-09-24 07:27:10 字數 2764 閱讀 9747

本篇博文以乙個簡單的例子來講述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 標頭檔案中,並沒有定義...