1.面向對象的程序設計思想是什么?
答:把數據結構和對數據結構進行操作的方法封裝形成一個個的對象。
2.什么是類?
答:把一些具有共性的對象歸類后形成一個集合,也就是所謂的類。
3.對象都具有的兩方面特征是什么?分別是什么含義?
答:對象都具有的特征是:靜態特征和動態特征。
靜態特征是指能描述對象的一些屬性,動態特征是指對象表現出來的行為
4.在頭文件中進行類的聲明,在對應的實現文件中進行類的定義有什么意義?
答:這樣可以提高編譯效率,因為分開的話只需要編譯移除生成對應的.obj文件后,應用該類的地方,這個類就不會被再次編譯,從而大大提高了效率。
5.在類的內部定義成員函數的函數體,這種函數會具備那種屬性?
答:這種函數會自動為內聯函數,這種函數在函數調用的地方在編譯階段都會進行代碼替換。
內聯函數:從源代碼層看,有行數的結構,而在編譯后卻不具備函數的性質。編譯時,類似宏替換,使用函數體替換調用處的函數名。一般在代碼中用inline修飾,但是否能形成內聯函數,需要看編譯器對該函數定義的具體處理。
6.成員函數通過什么來區分不同對象的成員數據?為什么它能夠區分?
答:通過this指針來區分的,因為它指向的是對象的首地址。
7.C++編譯器自動為類產生的四個缺省函數是什么?
答:默認構造函數,拷貝構造函數,解析構造函數,賦值函數。
8.拷貝構造函數在哪幾種情況下會被調用?
答:1.當類的一個對象去初始化改類的另一個對象時;;
?????? 2.如果函數的形參是類的對象,調用函數進行形參和實參結合時;
?????? 3.如果函數的返回值是類對象,函數調用完成返回時。
9.構造函數與普通函數相比在形式上有什么不同?
答:構造函數是類的一種特殊成員函數,一般情況下 ,它是專門用來初始化對象成員變量的構造函數的名字必須與類名相同,它不具有任何類型,不返回任何值。不能被認為調用。
10:什么時候必須重寫拷貝構造函數?
答:當構造函數涉及到動態儲存分配空間時,要自己寫拷貝構造函數,并且要深拷貝。
??? 神拷貝是指原對象與拷貝對象相互獨立,其中任何一個對象的改動都不會對另外一個對象造成影響。舉個例子,一個人名叫張三,后來用它克隆(假設法律允許)了另外一個人叫李四,不管是張三缺胳膊少腿還是李四缺胳膊少腿都不會影響另外一個人。比較典型的就是Vue(值)對象,如預定義類型Int32, Doube, 以及結構(struct),枚舉(Enum)等。
淺拷貝是指原對象與拷貝對象共用一份實體,僅僅是引用的變量不同(名稱不同)。對其中任何一個對象的改動都會影響另外一個對象。舉個例子,一個人一開始叫張三,后來改名叫李四了,
可是還是同一個人,不管是張三缺胳膊少腿還是李四缺胳膊少腿,都是這個人倒霉。比較典型的就有Reference(引用)對象,如Class(類)。