国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

【c++】c++初識--基本知識梳理(2)

2019-11-11 02:39:55
字體:
來源:轉載
供稿:網友

5.引用VS指針

(1)作用:引用是給變量起一個別名;

(2)定義引用的一般格式:

         類型 &引用名 = 變量名;

例如:

int a = 1;int &b = a; //b是的別名,因此a和b是同一個單元

(PS:定義引用時一定要初始化,指明引用變量是誰的別名)

在實際應用中,引用一般用作參數傳遞與返回值。

(3)const引用是指向const對象的引用

const int ival = 1024;  //const int& refval = ival; //正確int &ref2 = ival;      //錯誤

(4)函數傳參:按引用傳遞

引用傳遞方式是在函數定義時在形參前面加上引用運算符&;

         例如:voidswap(int &a, int &b);

引用作為參數對形參的任何操作都能改變響應的實參數據,又使函數調用顯得方便、自然。

(5)引用可作為函數的返回值,放在賦值運算符左邊;

#include<iostream> using namespace std; int& func(int &num){    return num;} int main(){    int num=1;    func(num)=7;    cout<<"num = "<<num<<endl;    return 0;}

結果為:num = 7;

 

(6)引用與指針的區別

引用訪問一個變量是直接訪問,而指針是間接訪問;

引用是一個變量的別名,本身不單獨分配自己的內存空間,而指針有自己的內存空間;

引用一經初始化不能再引用其他變量,而指針可以重新指向其他變量。

(盡可能使用引用,不得已時使用指針)

 

6.函數升級

(1)內聯函數的使用

inline int add(int a, int b){   return a + b;}inline int add(int a, int b)

{

   return a + b;

}

宏函數

#define ADD(a, b)  a + b

(2)內聯函數與宏函數的區別

內聯函數調用時,要求實參和形參的類型一致,另外內聯函數會先對實參表達式進行求值,然后傳遞給形參;而宏調用時只用實參簡單地替換形參。

內聯函數是在編譯的時候,在調用的地方將代碼展開,而宏則是在預處理時進行替換的;

         在c++中最好用inline函數替代帶參數的宏。

(3)函數重載(overload)

定義:相同的作用域,如果兩個函數名稱相同,而參數不同,稱為重載(overload)

條件:編譯器通過檢查實際參數的個數、類型和順序確定相應的被調用函數。

name managling(名字改編):c++為了支持重載,會將相同的函數名根據形參的不同而改編成不同的名字加以識別。

實現c與c++混合編程:extern “C”

ifdef __cplusplusextern “C”{#endif……#ifndef __cplusplus}#endif

帶默認形參值的函數:

         函數沒有聲明時,在函數定義中指定形參的默認值;

         函數既有定義又有聲明時,聲明指定后,定義時就不能再指定默認值;

         默認值的定義必須遵守從右到左的順序,如果某個形參沒有默認值,則它左邊的參數就不能有默認值。

         voidfunc(int a, double b = 4.2, int c= 3); //合法         voidfunc(int a = 3, double b, int c = 3);  //不合法

函數調用時,實參與形參按從左到右的順序進行匹配。

 

7.命名空間

(1)c語言 VS c++

c語言中所有的全局標識符共享同一個作用域,標識符之間可能發生沖突

c++中提出了命名空間的概念:

命名空間將全局作用域分成不同的部分;

不同命名空間中的標識符可以同名而不會發生沖突;

命名空間可以互相嵌套;

全局作用域也叫默認命名空間。

(2)如何定義命名空間

c++命名空間的定義:

namespace name{…}

namespace First{   int I = 0;}namespace Second{    int I = 1;    namespaceInternal    {        struct p        {            int x;            int y;        };    }}

(3)c++命名空間的使用

使用整個命名空間:using namespace name;

使用命名空間中的變量:using name::variable;

使用默認命名空間中的變量:::variable

 

示例:

#include<iostream> usingnamespacestd; namespaceFirst{    inti=1;}namespaceSecond{    inti=2;     namespaceInternal    {        structmystruct        {            intx;            inty;        };    }} int main(){    usingnamespaceFirst;    usingSecond::Internal::mystruct;     cout<<"i = "<<i<<endl;    cout<<"second i = "<<Second::i<<endl;     mystructnode={3,4};    cout<<"node.x = "<<node.x<<endl;    cout<<"node.y = "<<node.y<<endl;       return0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 呼和浩特市| 玉林市| 临夏市| 郎溪县| 大埔区| 武鸣县| 溧水县| 顺义区| 肇源县| 桃江县| 那曲县| 商洛市| 涿州市| 乌什县| 芒康县| 舟山市| 昆山市| 三江| 镇平县| 专栏| 蓬溪县| 淮北市| 尼木县| 鹤岗市| 綦江县| 灵丘县| 汕头市| 崇信县| 商都县| 新建县| 沂南县| 凤凰县| 九龙坡区| 旬阳县| 化隆| 休宁县| 日照市| 临西县| 阿尔山市| 宁波市| 田东县|