日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3-V2-类和对象 -- const内联 静态成员 友元

發(fā)布時(shí)間:2023/11/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3-V2-类和对象 -- const内联 静态成员 友元 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

const修飾成員函數(shù)

在成員函數(shù)后面加一個(gè)const, const修飾this指針指向的對象, 保證調(diào)用這個(gè)const成員函數(shù)的對象在函數(shù)內(nèi)不會(huì)被改變

注意:成員函數(shù)如果不修改成員變量,則加上const,成員函數(shù)如果要修改成員變量,此時(shí)就不能給其加上const修飾了
1.const對象不能調(diào)用非const成員函數(shù),可以調(diào)用const成員函數(shù)
2.非const對象可以調(diào)用非const成員函數(shù)和const成員函數(shù)
3.const成員函數(shù)可以調(diào)用其他的const成員函數(shù),但是不能調(diào)用其他的非const成員函數(shù)
4.非const成員函數(shù)內(nèi)可以調(diào)用其他const成員函數(shù)和非const成員函數(shù)
總結(jié)一下,對象在調(diào)用成員函數(shù)的時(shí)候作用域只能縮小,不能增大.

inline內(nèi)聯(lián)

用inline關(guān)鍵字修飾的函數(shù) 叫做內(nèi)斂函數(shù),編譯器在進(jìn)行編譯的時(shí)候,會(huì)在調(diào)用該函數(shù)的地方將該函數(shù)進(jìn)行展開, 沒有函數(shù)的壓棧過程,因此內(nèi)聯(lián)函數(shù)運(yùn)行效率較高
1.inline是一種以空間換時(shí)間的做法, 省去了調(diào)用函數(shù)時(shí)候的壓棧開銷, 因此循環(huán)遞歸等不適宜內(nèi)聯(lián)函數(shù)
2.內(nèi)聯(lián)函數(shù)只是一個(gè)建議,編譯會(huì)將其自動(dòng)優(yōu)化,如果涉及到的函數(shù)是遞歸循環(huán)等, 編譯器會(huì)將內(nèi)聯(lián)忽略
3.定義在類內(nèi)的函數(shù)默認(rèn)為是內(nèi)聯(lián)函數(shù)

宏的優(yōu)點(diǎn)以及缺點(diǎn)

宏的優(yōu)點(diǎn)

增加代碼的復(fù)用性,提高性能

宏的缺點(diǎn)

宏不方便調(diào)試,因?yàn)楹甑恼归_是在預(yù)處理階段對其進(jìn)行展開的
宏的可讀性較差,可維護(hù)性較差, 如果不注意會(huì)導(dǎo)致錯(cuò)誤
宏無類型,安全機(jī)制較差

友元

友元函數(shù):突破類的封裝過程

在c++中友元函數(shù)允許在類外訪問該雷的所有成員函數(shù),就像成員函數(shù)一樣, 友元函數(shù)只需要在該函數(shù)前面加上關(guān)鍵字friend
友元函數(shù)可以通過對象訪問所有成員,私有和保護(hù)也一樣

友元類:

有兩個(gè)類 A 和 B, 其中A類的私有成員之一是B類的一個(gè)對象, 此時(shí)此時(shí)A類就是B類的友元類

class Date {friend void Show(const Date& d);friend ostream& operator << (ostream& out, const Date& d);friend istream& operator >> (istream& in, Date& d);friend class Time; public:Date(int year = 1900, int month = 1, int day = 1):_year(year),_month(month),_day(day){cout << "Date(int year = 1900, int month = 1, int day = 1)" << endl;}void Display(){cout << _year << "-" << _month << "-" << _day << endl;}~Date(){cout << "~Date()" << endl;}Date(const Date& d){this -> _year = d._year;this -> _month = d._month;this -> _day = d._day;cout << "Date(const Date& d)" << endl;}Date& operator = (const Date& d){this -> _year = d._year;this -> _month = d._month;this -> _day = d._day;cout << "Date& operator = (const Date& d)" << endl;return *this;} private:int _year;int _month;int _day; };class Time { public:Time(int year = 1900, int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0):_hour(hour),_minute(minute),_second(second){_d._year = year;_d._month = month;_d._day = day;}void Show(){cout << _d._year << "-" << _d._month << "-" << _d._day << endl;cout << _hour << ":" << _minute << ":" << _second << endl;} private:int _hour;int _minute;int _second;Date _d; };

注意: 不是任何時(shí)候友元都比較好, 我們應(yīng)該知道友元是對類的封裝的一個(gè)突破, 所以應(yīng)在下檔的時(shí)候使用.

類的靜態(tài)成員

類里面的成員用static 關(guān)鍵字進(jìn)行修飾的都叫做靜態(tài)成員. 其中靜態(tài)成員是屬于這個(gè)類的不屬于某個(gè)對象,即static成員屬于這個(gè)類的所有對象,不被某個(gè)對象所獨(dú)有
靜態(tài)成員函數(shù)沒有隱含的this指針,那么在訪問靜態(tài)成員函數(shù)的時(shí)候只需要使用了類型::作用域訪問符便可以調(diào)用該靜態(tài)成員函數(shù)

//代碼展示: class Date { public:Date(){sCount++;cout << "Date() " << endl;}void Display(){cout << _year << "-" << _month << "-" << _day << endl;}static void PrintCount(){cout << "Date count:" << sCount << endl;} private:int _year;int _month;int _day; private:static int sCount; };int Date::sCount = 0;void Test() {Date d1,d2;Date::PrintCount(); }

注意靜態(tài)成員函數(shù)不能訪問非靜態(tài)成員,但是非靜態(tài)成員函數(shù)可以訪問靜態(tài)成員

幾個(gè)小細(xì)節(jié)

1.匿名對象(date())存在的生命周期是它所在的那一行, 同時(shí)也要注意當(dāng)我們已經(jīng)自己寫了拷貝構(gòu)造函數(shù)的時(shí)候, 此時(shí)編譯器就不會(huì)自動(dòng)生成構(gòu)造函數(shù)
2.等號兩邊兩個(gè)類型不同的時(shí)候小類型會(huì)轉(zhuǎn)向大類型
3.在寫工程時(shí),為什么.cpp和.h分開
(1)方便閱讀
(2)封裝(開源和閉源)
(3)提高編譯速度

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的3-V2-类和对象 -- const内联 静态成员 友元的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。