国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

找b130079160拿零聲學院C C++Linux服務器開發(fā) 高級架構(gòu)師

2023-03-24 17:21 作者:d612000793  | 我要投稿

C++基礎

第一章、概述

1、在學習C++編程前,首先來重復一個基本的問題:程序由什么組成、算法的5大特征、以及面向?qū)ο蟮?大原則?

答:程序=數(shù)據(jù)結(jié)構(gòu)+算法


算法的5個基本特征:確定性、有窮性、輸入、輸出、可行性。


確定性:算法的每一步驟必須有確切的定義;


有窮性:算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止;


輸入:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定出了初始條件;


輸出:一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果。沒有輸出的算法是毫無意義的;


可行性:算法中執(zhí)行的任何計算步驟都是可以被分解為基本的可執(zhí)行的操作步,即每個計算步都可以在有限時間內(nèi)完成;


面向?qū)ο蟮?大原則:單一職責原則(SRP)、開放封閉原則(OCP) 、里氏替換原則(LSP)、依賴倒置原則(DIP) 、接口隔離原則(ISP);


?


2、C++不是類型安全的

答:C++ 是類型不安全的,C#和java是類型安全的。


對于C++類型不安全舉個例子:C++中可以直接將本應返回bool型的函數(shù)返回int,然后由編譯器自己將int轉(zhuǎn)化為bool型(非零轉(zhuǎn)化為true,零轉(zhuǎn)化


false)。注意:類型安全就是指兩個類型直接要相互轉(zhuǎn)換,必須要顯示的轉(zhuǎn)換,不能隱式的只用一個等于號就轉(zhuǎn)換了。


補充:①string及STL模板庫是類型安全的;②MFC中CString是類型安全的類,其中所有類型轉(zhuǎn)換必須顯示轉(zhuǎn)換;


?


3、C++中常見的關鍵字含義

答:如下:


①inline:定義內(nèi)聯(lián)函數(shù),該關鍵字是基于定義,如果只在函數(shù)聲明時給出inline,則函數(shù)不會被認為是內(nèi)聯(lián)函數(shù),所以必須在函數(shù)定義的地方也加上inline,同時inline只是向編譯器建議函數(shù)以內(nèi)聯(lián)函數(shù)處理,不是強制的;


②const:定義常成員,包括const數(shù)據(jù)成員和const成員函數(shù),const數(shù)據(jù)成員必須,也只能通過構(gòu)造函數(shù)的初始化列表進行初始化,const成員函數(shù)只能訪問類的成員,不能進行修改,如果需要修改,則引入下面的mutable關鍵字;


③mutable:這個關鍵字的引入是解決const成員函數(shù)要修改成員變量,通常而言,const成員函數(shù)只能訪問成員變量,不能修改,但是如果成員變量被mutable修飾了,則在const成員函數(shù)中可以修改該變量。mutable和const不能同時用于修飾成員變量;


④ static:聲明靜態(tài)成員,包括靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù),它們被類的所有對象共享,靜態(tài)數(shù)據(jù)成員在使用前必須初始化,而靜態(tài)成員函數(shù)只能訪問靜態(tài)數(shù)據(jù)成員,不能訪問非靜態(tài)數(shù)據(jù)成員,因為該函數(shù)不含有this指針;


static成員函數(shù)不可以訪問非靜態(tài)成員的詳細解釋:


普通的非靜態(tài)成員函數(shù)訪問非靜態(tài)成員變量是因為類實例化生成為對象后,對象的非靜態(tài)成員函數(shù)都擁有一個this指針,而實際上非靜態(tài)成員函數(shù)對成員變量的訪問都是通過這個this指針實現(xiàn)的(this就是對象指針)。而非靜態(tài)成員函數(shù)并不包含this指針,所以只能通過類名形式如A::n訪問成員變量,而支持該訪問方式的只有靜態(tài)成員變量。


⑤virtual:聲明虛函數(shù),用于實現(xiàn)多態(tài),該關鍵字是基于聲明的;


⑥friend:聲明友元函數(shù)和友元類,該關鍵字也是基于聲明的;


⑦volatile:被該關鍵字修飾的變量是指其值可能在編譯器認識的范圍外被修改,因此編譯器不要對該變量進行的操作進行優(yōu)化。可以與const同時修飾一個變量。


?


4、程序編輯、預編譯、編譯與鏈接

答:①編輯:也就是編寫C/C++程序。


②預處理:相當于根據(jù)預處理指令組裝新的C/C++程序。經(jīng)過預處理,會產(chǎn)生一個沒有宏定義,沒有條件編譯指令,沒有特殊符號的輸出文件,這個文件的含義同原本的文件無異,只是內(nèi)容上有所不同。


預處理注意事項:


1)預處理指令在程序編譯時就由編譯器操作,可以放在程序的任意位置;

2) 因為預處理指令后沒有分號,所以一行只能放一條,若要放多條,可以用/來區(qū)分;

3)宏名推薦用大寫字母,但不是必須的;

4) 宏是在編譯期間進行的,所以不占用程序運行的時間。

③編譯:將預處理完的文件進行一系列詞法分析、語法分析、語義分析及優(yōu)化后,產(chǎn)生相應的匯編代碼文件。


④鏈接:通過鏈接器將一個個目標文件(或許還會有庫文件)鏈接在一起生成一個完整的可執(zhí)行程序。鏈接是將各個編譯單元中的變量和函數(shù)引用與定義進行綁定,保證程序中的變量和函數(shù)都有對應的實體,若被調(diào)用函數(shù)未定義,就在此過程中會發(fā)現(xiàn)。


?


5、引用庫文件時使用雙引號和尖括號的區(qū)別

答:使用#include” “表示引用用戶庫文件,在當前目錄下查找,若沒有就到標準庫查找;


使用#include< >表示引用標準庫文件,直接到到標準庫查找;


所以,若引用標準庫文件如stdio.h,用< >會比用" "查找快一些。


?


6、C/C++中的.h頭文件中ifndef/define/endif

答:主要作用是防止重復引用,比如一個頭文件定義如下:

#ifndef _HEAD_H_

#define _HEAD_H_

//主體代碼

#endif

假如該頭文件第一次被引用,_HEAD_H_沒有被定義,所以就執(zhí)行宏定義,直到#endif;

該頭文件第二次被引用的時候,_HEAD_H_已經(jīng)被定義,下面的語句就不會執(zhí)行。



找b130079160拿零聲學院C C++Linux服務器開發(fā) 高級架構(gòu)師的評論 (共 條)

分享到微博請遵守國家法律
开封县| 鲜城| 安新县| 黔西| 临西县| 上犹县| 大姚县| 繁昌县| 徐闻县| 息烽县| 酉阳| 宕昌县| 阜康市| 台东市| 南开区| 化德县| 双城市| 甘德县| 普兰县| 扶风县| 安仁县| 衡阳市| 益阳市| 德兴市| 睢宁县| 杭锦后旗| 屯留县| 大厂| 海南省| 上高县| 威信县| 电白县| 和静县| 伊川县| 镇雄县| 汝城县| 巧家县| 东城区| 芒康县| 柘荣县| 伊宁市|