const成員函數(shù),內(nèi)聯(lián)函數(shù),友元函數(shù),static成員

原文鏈接:https://blog.csdn.net/qq_38646470/article/details/79795538
專欄鏈接:https://blog.csdn.net/column/details/20026.html
[TOC]
#1.const成員函數(shù)
const修飾成員函數(shù)
在成員函數(shù)后面加const,const修飾this指針?biāo)赶虻膶ο?,也就是保證調(diào)用這個const成員函數(shù)的對象在函數(shù)內(nèi)不會被改變。

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設(shè)計制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)新建,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

class Date
{
public :
void Display ()
{
    cout<<"year:" <<_year<< endl;
    cout<<"month:" <<_month<< endl;
    cout<<"day:" <<_day<< endl<<endl ;
}

void Display () const
{
    cout<<"year:" <<_year<< endl;
    cout<<"month:" <<_month<< endl;
    cout<<"day:" <<_day<< endl<<endl;
}
private :
    int _year ; // 年
    int _month ; // 月
    int _day ; // 日
};
void Test ()
{
    Date d1 ;
    d1.Display ();
    const Date d2;
    d2.Display ();
}

?const對象不可以調(diào)用非const成員函數(shù)可以調(diào)用const成員函數(shù)
?非const對象可以調(diào)用非const成員函數(shù)和const成員函數(shù)
?const成員函數(shù)內(nèi)可以調(diào)用其它的const成員函數(shù)不可以調(diào)用非const成員函數(shù)
?非const成員函數(shù)內(nèi)可以調(diào)用其它的const成員函數(shù)非const成員函數(shù)

#2.內(nèi)聯(lián)函數(shù)
以inline修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時C++編譯器會調(diào)用內(nèi)聯(lián)函數(shù)的地方展開,沒有函數(shù)壓棧的開銷,內(nèi)聯(lián)函數(shù)提升程序運行的效率。

?. inline是一種以空間換時間的做法,省去調(diào)用函數(shù)額開銷。所以代碼很長或者有循環(huán)/遞歸的的函數(shù)不適宜使用內(nèi)聯(lián)。
?. inline對于編譯器而言只是一個建議,編譯器會自動優(yōu)化,如果定義為inline的函數(shù)體內(nèi)有循環(huán)遞歸等等,編譯器優(yōu)化時會忽略掉內(nèi)聯(lián)。
?. inline必須函數(shù)定義放在一起,才能成為內(nèi)聯(lián)函數(shù),僅將inline放在聲明前是不起不作用的。
?. 定義在類內(nèi)的成員函數(shù)默認(rèn)定義為內(nèi)聯(lián)函數(shù)。

但是在一般的編譯器下看不出內(nèi)聯(lián)函數(shù)的效果,因為編譯器會自動優(yōu)化。接下來給大家在linux下查看。

#3.友元
友元函數(shù):
在C++中友元函數(shù)允許在類外訪問該類中的任何成員,就象成員函數(shù)一樣,友元函數(shù)用關(guān)鍵字friend說明。
?. 友元函數(shù)不是類的成員函數(shù)。
?. 友元函數(shù)可以通過對象訪問所有成員,私有和保護(hù)成員也一樣。
友元函數(shù):

友元類:

#4.static成員

#5.N中構(gòu)造拷貝構(gòu)造的優(yōu)化
看一段代碼:

class AA
{};
AA f (AA a)
{
return a ;
}
void Test1 ()
{
AA a1 ;
a1 = f(a1);
}
void Test2 ()
{
AA a1 ;
AA a2 = f(a1);
}

void Test3 ()
{
AA a1 ;
AA a2 = f(f(a1));
} 

回答下面的問題:
Test1中調(diào)用了次AA的拷貝構(gòu)造函數(shù)。
Test2中調(diào)用了
次AA的拷貝構(gòu)造函數(shù)。
Test3中調(diào)用了___次AA的拷貝構(gòu)造函數(shù)。
const成員函數(shù),內(nèi)聯(lián)函數(shù),友元函數(shù),static成員

網(wǎng)站欄目:const成員函數(shù),內(nèi)聯(lián)函數(shù),友元函數(shù),static成員
轉(zhuǎn)載來于:http://muchs.cn/article2/pichoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗電子商務(wù)、建站公司、網(wǎng)站策劃、營銷型網(wǎng)站建設(shè)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營