国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

C++學(xué)習(xí)中的幾個(gè)理解誤區(qū)

發(fā)布時(shí)間:2013-9-30 14:29    發(fā)布者:crcrwxy
關(guān)鍵詞: C++
1.       引用類型。很多初學(xué)者對(duì)引用這種數(shù)據(jù)類型存在誤解,認(rèn)為使用它時(shí)需要取地址,并且容易把它和指針搞混淆,比如下面的程序代碼片段:
        void fun(int& a,int& b)
        {
        int c=8;
        &a=c       ;      //錯(cuò)誤,a是引用類型的變量,不能對(duì)它取址做左值。
        b=&c;      //錯(cuò)誤,b是引用類型的整形變量,不能將一個(gè)整形變量的地址賦值給它。
        ….
        }
        int main()
        {
        int m=5,n=6;
        fun(&m,&n);   //錯(cuò)誤,m和n要傳遞給引用類型的形參,相當(dāng)于要完成初始化賦值操作。
        ....
        return 0;
        }
        其實(shí),引用類型的很好理解,你只要記住以下三點(diǎn):
        1)        引用類型的變量是被引用變量的別名。
        2)        引用類型的變量和被引用變量共同占用一塊內(nèi)存。
        3)        引用類型一經(jīng)初始化,就把它看成是個(gè)變量,對(duì)它的后續(xù)操作和對(duì)變量是一樣的。
        例如下面的程序代碼片段:
        int main()
        {
        int a=5;
        int *p=NULL;
        int& b=a;         //正確,此時(shí)的b是“int&”這種引用類型,它是變量a的別名。
        b=7;                //正確,因?yàn)閎和a共同占用一塊內(nèi)存,所以對(duì)b改變引起a的改變。
        p=&b;             //正確,b經(jīng)初始化是一個(gè)變量,把b的地址賦值給指針p合情合理。
        }
        通過(guò)以上的說(shuō)明,你應(yīng)該對(duì)引用類型有了正確的理解。

        2.       typedef關(guān)鍵字。很多初學(xué)者認(rèn)為typedef就是為一個(gè)數(shù)據(jù)類型起個(gè)別名,其實(shí)這是不準(zhǔn)
        確的,例如下面的一個(gè)語(yǔ)句:
        typedef char array[80]; //這里難道是將a[80]作為char的別名?
        顯然不是,這里其實(shí)用typedef來(lái)說(shuō)明此處的array是一個(gè)含有80個(gè)char字符的數(shù)組,我們可以用:
        array a,b;         //此時(shí)的a,b均是array這種類型,即含有80個(gè)char 字符的數(shù)組。
        使用typedef可以使我們的定義更加的容易理解,特別是在解釋一個(gè)非常復(fù)雜的函數(shù)原型時(shí),例如linux下的信號(hào)處理函數(shù):
        void ( *signal (int signo,void (*func) (int) ) ) (int);    //     這個(gè)原型你看得費(fèi)力不?
        此時(shí),我們可以用:
        typedef void sigfunc (int);             //此時(shí)的sigfuc是一種函數(shù)指針類型
        sigfunc *signal (int ,sigfunc *);      //此時(shí)signal函數(shù)是帶有兩個(gè)參數(shù),一個(gè)int類型,一個(gè)函數(shù)指針類型,并且它的返回類型是函數(shù)指針類型,而這個(gè)函數(shù)指針是指向一個(gè)無(wú)返回類型帶一個(gè)int類型參數(shù)的函數(shù)。這樣理解是不是清楚一點(diǎn)。

        3.       內(nèi)聯(lián)函數(shù)。很多初學(xué)者認(rèn)為內(nèi)聯(lián)函數(shù)就像宏一樣,但比宏安全一點(diǎn)。其實(shí)這是不對(duì)的內(nèi)聯(lián)函數(shù)可以說(shuō)是C++的一大優(yōu)點(diǎn),它有宏替換一樣的效率,又有宏定義不具備的安全性,
        C++的類的體內(nèi)定義的那部分函數(shù),編譯器會(huì)默認(rèn)是內(nèi)聯(lián)函數(shù),而不管它加沒(méi)有加inline這樣一個(gè)關(guān)鍵字,例如:
        class A
        {
        public:
        int getsize() {return _size}
        int getlength() {return _length}
        };   //上面的兩個(gè)成員函數(shù)都是內(nèi)聯(lián)函數(shù)。
        另外,不是你定義一個(gè)內(nèi)聯(lián)函數(shù),它就是內(nèi)聯(lián)函數(shù),這是因?yàn)閮?nèi)聯(lián)函數(shù)是由編譯器決定,你向編譯器申請(qǐng)一個(gè)內(nèi)聯(lián)函數(shù),如果里面的代碼量太大了的話,是申請(qǐng)不到的,因?yàn)閮?nèi)聯(lián)函數(shù)的代碼是放在符號(hào)表中的。在使用時(shí)直接進(jìn)行替換。而符號(hào)表資源是有限的。
        但是內(nèi)聯(lián)函數(shù)是函數(shù),編譯時(shí)期會(huì)去檢查它的函數(shù)語(yǔ)法,形參類型是否正確等等。

        4.       this指針。很多人對(duì)this指針不理解,覺(jué)得它很詭異,當(dāng)然也就存在很多誤解,的確this指針比較的隱晦難懂。其實(shí)你只要記住以下幾點(diǎn)就可以了:
        1)        this指針是編譯器定義的一種指針變量,它存在于ecx寄存器中。
        2)        this指針的作用域是在類的體內(nèi)。
        3)        this指針是通過(guò)成員函數(shù)調(diào)用時(shí),傳過(guò)去的。比如:
        class a
        {
        void fun(){}
        };
        int main()
        {
        a obj;
        obj.fun()  //其實(shí)在這里編譯器會(huì)自動(dòng)把它轉(zhuǎn)換成  fun(&obj),此時(shí)this就指向了obj了。
        }
        4) 一個(gè)類中的多個(gè)對(duì)象都是用this指針來(lái)指定的,this指針只有一個(gè),但它是指針,可以指針不同的對(duì)象。
        5) 當(dāng)有一個(gè)基類和一個(gè)派生類對(duì)象時(shí),若有且僅有派生類的一個(gè)對(duì)象,那么基類的this指針指向派生類對(duì)象。

        5         const關(guān)鍵字。這個(gè)修飾詞被很多人誤解,有人認(rèn)為它修飾的變量只讀,也有人認(rèn)為它不分配內(nèi)存的,這些說(shuō)法都是不準(zhǔn)確的。其實(shí)const可以用來(lái)修飾非常多的類型還可以修飾函數(shù),它在某些情況下不分配內(nèi)存,而在另外一些情況分配內(nèi)存。不管const修飾的是什么,你只要記住一點(diǎn),const直接修飾的變量或函數(shù),是針對(duì)這個(gè)變量本身的。比如下面的程序段代碼:
                int main()
              {
                  int b=10;
                  const int size=100;
                  int array[size];  //類似于宏替換,在編譯時(shí)直接替換,所以size是在符號(hào)表中不占內(nèi)存
                  const int m[]={5,6,7,8}; //此時(shí)數(shù)組的各元素值是只讀的,并且為這個(gè)數(shù)組分配的內(nèi)存。
                  const int *p=&b;    //此時(shí)只是修飾了p這個(gè)指針指向一個(gè)數(shù)據(jù)時(shí),只能有只讀屬性操作。
                  b=12;                    //正確的,b可以做改變,因?yàn)閏onst修飾的是指針。
                  int* const pn=&b;  //正確的,也是修飾指針,但修飾的是指針存放的地址是只讀的。
                  return 0;
             }
        記住const是個(gè)修飾詞,一定要搞清楚它所修飾的對(duì)象是誰(shuí),修飾的對(duì)象的哪部分屬性然后就把修飾的那部分屬性看成是只讀的就行了。
本文地址:http://m.qingdxww.cn/thread-121548-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
usereechina 發(fā)表于 2013-10-8 14:34:27
haohao11111111
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜色大片在线观看 | 很黄很色很刺激视频播放 | 久久精品视频国产 | 久久免费特黄毛片 | 狠狠的干狠狠的操 | 91麻豆久久 | 亚洲影视在线 | 可以免费看黄的网址 | 亚洲午夜色 | 男人的天堂官网 | 欧美日韩91 | 毛片一区二区三区 | 国产经典自拍 | 国产自在线拍 | 亚洲高清在线观看视频 | 四虎国产精品永久一区 | 欧美三级网站 | 国产一级免费 | 国产三级在线观看完整版 | 欧美国产精品不卡在线观看 | 99精品久久久久久 | 精品影视网站入口 | 成熟女人特级毛片www免费 | 521avav| 深海狂鲨1免费观看完整版 深爱五月综合网 | 国产欧美在线播放 | 高清欧美一区二区免费影视 | 午夜成本人动漫在线观看 | 亚洲国产成人在线 | 色综合天天综合网看在线影院 | 精品欧美一区视频在线观看 | 亚洲视频在线免费观看 | 自拍视频一区 | 五月天婷婷综合 | 亚洲欧洲日产国码在线观看 | 国产精品自产拍在线网站 | 精品视频在线观看一区二区 | 国产高清晰在线播放 | 91亚色视频下载 | 九九亚洲视频 | 日日拍夜夜拍 |