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

首頁(yè) > 編程 > C++ > 正文

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

2019-11-11 02:49:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

5.引用VS指針

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

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

         類型 &引用名 = 變量名;

例如:

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

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

在實(shí)際應(yīng)用中,引用一般用作參數(shù)傳遞與返回值。

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

const int ival = 1024;  //const int& refval = ival; //正確int &ref2 = ival;      //錯(cuò)誤

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

引用傳遞方式是在函數(shù)定義時(shí)在形參前面加上引用運(yùn)算符&;

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

引用作為參數(shù)對(duì)形參的任何操作都能改變響應(yīng)的實(shí)參數(shù)據(jù),又使函數(shù)調(diào)用顯得方便、自然。

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

#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;}

結(jié)果為:num = 7;

 

(6)引用與指針的區(qū)別

引用訪問(wèn)一個(gè)變量是直接訪問(wèn),而指針是間接訪問(wèn);

引用是一個(gè)變量的別名,本身不單獨(dú)分配自己的內(nèi)存空間,而指針有自己的內(nèi)存空間;

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

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

 

6.函數(shù)升級(jí)

(1)內(nèi)聯(lián)函數(shù)的使用

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

{

   return a + b;

}

宏函數(shù)

#define ADD(a, b)  a + b

(2)內(nèi)聯(lián)函數(shù)與宏函數(shù)的區(qū)別

內(nèi)聯(lián)函數(shù)調(diào)用時(shí),要求實(shí)參和形參的類型一致,另外內(nèi)聯(lián)函數(shù)會(huì)先對(duì)實(shí)參表達(dá)式進(jìn)行求值,然后傳遞給形參;而宏調(diào)用時(shí)只用實(shí)參簡(jiǎn)單地替換形參。

內(nèi)聯(lián)函數(shù)是在編譯的時(shí)候,在調(diào)用的地方將代碼展開,而宏則是在預(yù)處理時(shí)進(jìn)行替換的;

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

(3)函數(shù)重載(overload)

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

條件:編譯器通過(guò)檢查實(shí)際參數(shù)的個(gè)數(shù)、類型和順序確定相應(yīng)的被調(diào)用函數(shù)。

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

實(shí)現(xiàn)c與c++混合編程:extern “C”

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

帶默認(rèn)形參值的函數(shù):

         函數(shù)沒(méi)有聲明時(shí),在函數(shù)定義中指定形參的默認(rèn)值;

         函數(shù)既有定義又有聲明時(shí),聲明指定后,定義時(shí)就不能再指定默認(rèn)值;

         默認(rèn)值的定義必須遵守從右到左的順序,如果某個(gè)形參沒(méi)有默認(rèn)值,則它左邊的參數(shù)就不能有默認(rèn)值。

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

函數(shù)調(diào)用時(shí),實(shí)參與形參按從左到右的順序進(jìn)行匹配。

 

7.命名空間

(1)c語(yǔ)言 VS c++

c語(yǔ)言中所有的全局標(biāo)識(shí)符共享同一個(gè)作用域,標(biāo)識(shí)符之間可能發(fā)生沖突

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

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

不同命名空間中的標(biāo)識(shí)符可以同名而不會(huì)發(fā)生沖突;

命名空間可以互相嵌套;

全局作用域也叫默認(rèn)命名空間。

(2)如何定義命名空間

c++命名空間的定義:

namespace name{…}

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

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

使用整個(gè)命名空間:using namespace name;

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

使用默認(rèn)命名空間中的變量:::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;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 和政县| 永泰县| 上饶市| 玉溪市| 梅河口市| 南漳县| 肥东县| 龙州县| 宁化县| 仁布县| 阜阳市| 溧水县| 遂平县| 来凤县| 屏南县| 宝坻区| 陈巴尔虎旗| 永康市| 永昌县| 湖南省| 天柱县| 温州市| 尉犁县| 江阴市| 宝清县| 宿州市| 合肥市| 七台河市| 宣汉县| 吴堡县| 惠安县| 常熟市| 莎车县| 建水县| 蒲江县| 通州市| 许昌县| 安远县| 焉耆| 砀山县| 黔西县|