C 入門基礎知識 類和引用

2021-07-12 05:30:17 字數 3053 閱讀 5309

一.類(類的6個預設函式)、物件、物件導向等概念

1.cpp的資料型別(除去c中的)

基本資料型別:bool型 邏輯型              非基本型:類 class

void型 無型別         

命名空間(為了解決全域性變數命名衝突的問題)

例:#include

using namespace std;    //標準輸入輸出流,命名空間為std

int main()

cout

<<''hello world''<;     //cout和endl為物件,來自命名空間,若前面沒有宣告命名空間,則寫為:std::cout<<」hello world「return 0;

可以隨時向命名空間新增定義,但是都定義在同一命名空間

例:#inlcude

namespace bit1      //定義乙個命名空間

int a=0;

namespace bit2      //定義另乙個命名空間

int a=20;

int main()

bit1::a=30;               //::為作用域解析符

bit2::a=40

2.輸入/輸出 流

cout →標準輸出流物件,《輸出操作符;

cin→標準輸入流物件,>>輸入操作符;

endl→標準換行操作符;

3.函式過載

例:#include

using namespace std;

int add(int num1,int num2)

return num1+num2;

float(float f1,float f2)

return f1+f2;

int main()

int num1=0;

int num2=0;

float f1=0.0;

float f2=0.0;

cin>>num1>>num2;

int ret=add(num1,num2);

cout<<"ret=">f1>>f2;

float f3=add(f1,f2);

注意:在同一作用域內,一組函式名相同,引數列表《個數/型別不同》不同,返回值型別可同可不同。

判斷函式是否過載時,只需要判斷其函式名和引數列表是否相同即可。

在c和cpp中,函式過載的規則不一樣,所以在cpp中使用c的函式時要用extern 」c「。

4.預設函式

全預設函式

例;int add1(int a,int b)

return a+b;

int main()

int ret=add1();      //此處可以不用寫引數,若將其改為add1(3),則結果為3,原因是引數是從左往右填充的

return 0;

半預設函式

例:int add2(int a,int b=0)

二.指標與引用

引用的概念:不是定義乙個新的變數,而是給乙個已經定義的變數賦予乙個新的名字,且該變數可以被多次引用,即乙個變數可以有多個別名;

引用要進行初始化,要明確誰是誰的別名;

引用可以傳遞,例如&q=m;&r=q;

乙個別名只能引用乙個變數

1.const引用

例:#include

using namespace std;

int main()

int *q=null;

const int *p=q;

int m=10;

const int &n=m;    //常引用,此時的n作為乙個常量對待,不能直接修改n,只能通過修改m來修改

return 0;

注意:不能將乙個const修飾的變數賦給乙個非const修飾的變數

不能將乙個常量直接引用,除非加上const,如const int &r=5

例:double b=3.14;

const int &k=b;

在**執行過程中,中間變數《臨時》為常屬性,則要用const來修飾。

2.引用用在函式引數中

例:#include

using namespace std;

int swap(int *a,int *b)            //傳指標的方式交換兩個變數的值

int tmp=*a;

int *a=*b;

*b=tmp;

對於swap函式而言,還有另一種方法就是利用引用

例:void swap(int &a,int &b)

int tmp=a;

a=b;

b=tmp;

int main()

int a=10;

int b=20;

swap(a,b);

return 0;

3.常引用傳參(當不希望函式內改變引數x的值的時候)

例:void readbigdata(const bigdata &x)

int a=x.arr[1000];

注意:返回值作為引用的時候,不能引用乙個臨時變數

例:int fun()

int ret=10;

return ret;    //這裡返回了乙個臨時變數,最好不要這樣寫

4.值返回和引用反彙編

值返回:將ret中的值放到eax暫存器中

組合語言:mov eax,dword ptr[ret];

組合語言:lea eax,[ret];

例:#include

using namespace std;

①int add(int a,int b)

②int *add()

③int &add(int a,int b)

以上三個add函式的功能是一樣的。

引用和指標的區別和聯絡:

1.引用只能開始的時候初始化一次,後面便不能再指向其他變數;

2.引用必須指向有效變數,而指標可以為空;

3.sizeof引用指的是引用物件的大小,sizeof指標指的是物件位址的大小;

4.指標和引用的自增或自減的意義不一樣;

5.相對而言,引用比指標更安全;

C 入門基礎知識

1.c 基本資料型別 整型int 字元型 char 浮點型 float double 邏輯性 bool 無型別 void 也稱內建型別 語言內部 已定義好的型別 非基本資料型別 陣列 type 指標 type 結構體 struct 聯合體 union 列舉 enum 類 class 這些即就是自定義...

c 入門基礎知識

名字空間 namespace,即名字空間,是指 識別符號的各種可見範圍。c 標準程式庫 中的所有識別符號都被定義於乙個名為std的namespace中。使用 using namespace 可以使得後面不需要每次指定名字空間。1 名字 空間除了 系統定義 的名字空間之外,還可以自定義,定義 名字空間...

C 入門基礎知識

一 命名空間 命名空間 實際上就是乙個由程式設計者命名的記憶體區域,程式設計者可以根據需要指定一些有名字的空間域,把一些全域性實體分別放在各個命名空間中,從而與其他全域性實體分隔開來。它相當於乙個更加靈活的檔案域 全域性域 可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它起乙個...