• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            寶杉的博客

            UNIX/LINUX;ACE;SNMP;C++
            posts - 33, comments - 23, trackbacks - 0, articles - 0

            08-09 缺省值

            Posted on 2007-08-13 10:21 寶杉 閱讀(230) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++

            缺省值

            提高程序易用性,避免每次調(diào)用函數(shù)參數(shù)都相同的情況。

            缺省值只能出現(xiàn)在函數(shù)聲明中,不能在函數(shù)定義中。

            兩個(gè)原因:

            一是函數(shù)的實(shí)現(xiàn)(定義)本來(lái)就與參數(shù)是否有缺省值無(wú)關(guān),所以沒(méi)有必要讓缺省值出現(xiàn)在函數(shù)的定義體中。

            二是參數(shù)的缺省值可能會(huì)改動(dòng),顯然修改函數(shù)的聲明比修改函數(shù)的定義要方便。

            規(guī)則:參數(shù)從后向前缺省

            正確的示例如下:

            void Foo(int x, int y=0, int z=0);

            錯(cuò)誤的示例如下:

            void Foo(int x=0, int y, int z=0);  

            但要避免二義性

            C++exams\default_para

             

            運(yùn)算符重載及其規(guī)則

            運(yùn)算符即可定義為成員函數(shù),也可定義為全局函數(shù)。

            規(guī)則如下:

            運(yùn)算符

            規(guī)則

            所有的一元運(yùn)算符

            建議重載為成員函數(shù)

            = () [] ->

            只能重載為成員函數(shù)

            += -= /= *= &= |= ~= %= >>= <<=

            建議重載為成員函數(shù)

            所有其它運(yùn)算符

            建議重載為全局函數(shù)

             

            不能重載的運(yùn)算符

            1)不能改變C++內(nèi)部數(shù)據(jù)類型(如int,float等)的運(yùn)算符。

            2)不能重載‘.’,因?yàn)?span lang=EN-US>‘.’在類中對(duì)任何成員都有意義,已經(jīng)成為標(biāo)準(zhǔn)用法。

            3)不能重載目前C++運(yùn)算符集合中沒(méi)有的符號(hào),如#,@,$等。原因有兩點(diǎn),一是難以理解,二是難以確定優(yōu)先級(jí)。

            4)對(duì)已經(jīng)存在的運(yùn)算符進(jìn)行重載時(shí),不能改變優(yōu)先級(jí)規(guī)則,否則將引起混亂。

             

            函數(shù)內(nèi)聯(lián)

            目的:提高執(zhí)行效率。

            Q為什么要用?

            A提高執(zhí)行效率。

            Q如何提高?

            A宏代碼本身不是函數(shù),但使用起來(lái)象函數(shù)。預(yù)處理器用復(fù)制宏代碼的方式代替函數(shù)調(diào)用,省去了參數(shù)壓棧、生成匯編語(yǔ)言的CALL調(diào)用、返回參數(shù)、執(zhí)行return等過(guò)程,從而提高了速度。

            Q缺點(diǎn)?

            使用宏代碼最大的缺點(diǎn)是容易出錯(cuò),預(yù)處理器在復(fù)制宏代碼時(shí)常常產(chǎn)生意想不到的邊際效應(yīng)。

             

             

            例如:

            #define MAX(a, b)       (a) > (b) ? (a) : (b)

            語(yǔ)句

            result = MAX(i, j) + 2 ;

            將被預(yù)處理器解釋為

            result = (i) > (j) ? (i) : (j) + 2 ;

            由于運(yùn)算符‘+’比運(yùn)算符‘:’的優(yōu)先級(jí)高,所以上述語(yǔ)句并不等價(jià)于期望的

            result = ( (i) > (j) ? (i) : (j) ) + 2 ;

            如果把宏代碼改寫(xiě)為

            #define MAX(a, b)       ( (a) > (b) ? (a) : (b) )

            則可以解決由優(yōu)先級(jí)引起的錯(cuò)誤。但是即使使用修改后的宏代碼也不是萬(wàn)無(wú)一失的,例如語(yǔ)句result = MAX(i++, j);

            將被預(yù)處理器解釋為

            result = (i++) > (j) ? (i++) : (j);

            對(duì)于C++ 而言,使用宏代碼還有另一種缺點(diǎn):無(wú)法操作類的私有數(shù)據(jù)成員

            久久无码高潮喷水| 国产成人无码精品久久久性色| 精品综合久久久久久888蜜芽| 久久男人Av资源网站无码软件| 国产精品久久波多野结衣| 亚洲午夜久久久精品影院| 亚洲欧洲精品成人久久奇米网| 亚洲午夜久久久影院| 久久国产精品二国产精品| 久久精品国产AV一区二区三区 | 国产高清美女一级a毛片久久w | 三级韩国一区久久二区综合| 亚洲综合精品香蕉久久网| 欧美一区二区精品久久| 久久中文字幕人妻丝袜| 久久国产精品一区| 久久91精品久久91综合| 国产精品欧美久久久久天天影视| 久久综合综合久久狠狠狠97色88| 日韩欧美亚洲综合久久| 久久精品国产福利国产琪琪| 精品久久久久久无码中文字幕一区 | 国产日产久久高清欧美一区| 色欲综合久久中文字幕网| 欧美成a人片免费看久久| 久久国产精品久久| 久久久久99精品成人片欧美 | 久久久久久久97| 模特私拍国产精品久久| 理论片午午伦夜理片久久| 岛国搬运www久久| 久久久久久久国产免费看| 老司机国内精品久久久久| 久久亚洲国产成人精品性色| 亚洲AV无码1区2区久久| 久久久久久久精品成人热色戒 | 久久亚洲AV成人无码软件| 大香伊人久久精品一区二区| 日产精品久久久久久久| 伊人久久精品无码av一区| 伊人久久大香线蕉av不变影院|