在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > const在函數(shù)聲明中的應(yīng)用

            const在函數(shù)聲明中的應(yīng)用

            作者: 時間:2012-08-28 來源:網(wǎng)絡(luò) 收藏

            [總結(jié)]:

            (1)一般情況下,的返回值為某個對象時,如果將其聲明為時,多用于操作符的重載。通常,不建議用修飾的返回值類型為某個對象或?qū)δ硞€對象引用的情況。原因如下:如果返回值為某個對象為(const A test = A 實例)或某個對象的引用為const(const A test = A實例) ,則返回值具有const屬性,則返回實例只能訪問類A中的公有(保護)數(shù)據(jù)成員和const成員,并且不允許對其進行賦值操作,這在一般情況下很少用到。

            (2)如果給采用“指針傳遞”方式的函數(shù)返回值加const修飾,那么函數(shù)返回值(即指針)的內(nèi)容不能被修改,該返回值只能被賦給加const 修飾的同類型指針。如:

            const char * GetString(void);

            如下語句將出現(xiàn)編譯錯誤:

            char *str=GetString();

            正確的用法是:

            const char *str=GetString();

            (3)函數(shù)返回值采用“引用傳遞”的場合不多,這種方式一般只出現(xiàn)在類的賻值函數(shù)中,目的是為了實現(xiàn)鏈式表達。如:

            class A

            {…

            A operate = (const A other); //賦值函數(shù)

            }

            A a,b,c; //a,b,c為A的對象

            a=b=c; //正常

            (a=b)=c; //不正常,但是合法

            若賦值函數(shù)的返回值加const修飾,那么該返回值的內(nèi)容不允許修改,上例中a=b=c依然正確。(a=b)=c就不正確了。

            [思考3]: 這樣定義賦值操作符重載函數(shù)可以嗎?

            const A perator=(const A a);

            2. 類成員函數(shù)中const的使用

            一般放在函數(shù)體后,形如:void fun() const;

            任何不會修改數(shù)據(jù)成員的函數(shù)都因該聲明為const類型。如果在編寫const成員函數(shù)時,不慎修改了數(shù)據(jù)成員,或者調(diào)用了其他非const成員函數(shù),編譯器將報錯,這大大提高了程序的健壯性。如:

            class Stack

            {

            public:

            void Push(int elem);

            int Pop(void);

            int GetCount(void) const; //const 成員函數(shù)

            private:

            int m_num;

            int m_data[100];

            };

            int Stack::GetCount(void) const

            {

            ++m_num; //編譯錯誤,企圖修改數(shù)據(jù)成員m_num

            Pop(); //編譯錯誤,企圖調(diào)用非const函數(shù)

            Return m_num;

            }

            3. 使用const的一些建議

            (1)要大膽的使用const,這將給你帶來無盡的益處,但前提是你必須搞清楚原委;

            (2)要避免最一般的賦值操作錯誤,如將const變量賦值,具體可見思*;

            (3)在參數(shù)中使用const應(yīng)該使用引用或指針,而不是一般的對象實例,原因同上;

            (4) const在成員函數(shù)中的三種用法(參數(shù)、返回值、函數(shù))要很好的使用;

            (5) 不要輕易的將函數(shù)的返回值類型定為const;

            (6)除了重載操作符外一般不要將返回值類型定為對某個對象的const引用;


            上一頁 1 2 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉