C\C++ 基礎知識點整理(二)

局部變量可以和全局變量重名嗎?

  • 答:能夠重名,若是局部變量和全局變量重名,則默認在函數中訪問的相同標識符是表明局部變量,若是要訪問全局變量,則能夠在標識符前面加上::便可,::在此處表示要訪問全局域中的標識符。

請簡述extern關鍵字在C++語言中的做用?

  • 答:有兩個做用,做用一是用於聲明全局變量;做用二是告知C++編譯器,某些函數是被C語言編譯器編譯出來的,這樣C++就能經過正確的名稱來連接C語言編譯器編譯出來的函數了。

請簡述頭文件包含中使用<>和""的不一樣?

  • 答:<>是從編譯系統設置的頭文件搜索目錄中搜索頭文件,找不到就報錯;""是先在工程所在目錄中搜索頭文件,找不到就再去編譯系統設置的頭文件搜索目錄中搜索頭文件,再找不到就報錯。

請簡述C++語言中struct和class的區別

  • 答:struct 的成員默認是公有的,而類的成員默認是私有的。struct和class在其餘方面是功能相同的。通常約定俗成的規矩,若是一個複合數據類型僅僅包含一些公有成員變量而沒有成員函數或僅僅是不多的成員函數,那麼這個複合數據類型能夠設置爲struct,不然的話應該設置爲class。

請說出const與#define相比有什麼優點?

  • 答:const常量有數據類型,編譯器能夠對其進行類型安全檢查,而宏僅僅是文本替換,沒有「類型」;另外有些集成化的調試工具能夠對const常量進行調試,可是不能對宏進行調試。

請簡述面向對象的三個基本特徵?

  • 答:封裝,將客觀事物抽象成類,每一個類對自身的數據和方法實行訪問權限管理;繼承,即子類自動擁有父類的全部成員變量和成員函數,保護、公有成員能夠被子類成員函數訪問,私有成員不能被子類成員函數訪問;多態,簡單地說就是經過相同的代碼根據不一樣狀況調用不一樣函數的過程,具體實現通常是父類指針指向子類對象調用子類對象的虛成員函數

請簡述多態的做用?

  • 答:有兩個做用,做用一是隱藏實現細節,使得代碼可以模塊化,擴展代碼模塊,實現代碼重用;做用二是接口重用,爲了類在繼承和派生的時候,保證使用繼承體系下任一類的實例的某一屬性時的正確用

main 函數執行之前,還會執行什麼代碼?

  • 答:進程啓動後,要執行一些初始化代碼(如設置環境變量等),而後跳轉到main執行。全局對象的構造也在main以前。

結構與聯合有何區別?

  • 答:1)結構和聯合都是由多個不一樣的數據類型成員組成, 但在任何同一時刻, 聯合轉只存放了一個被選中的成員, 而結構的全部成員都存在。
    2)對於聯合的不一樣成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於結構的不一樣成員賦值是互不影響的。

類A中沒有任何成員變量與成員函數,這時sizeof(A)的值是多少,若是不是0,請解釋一下編譯器爲何沒有讓它爲0?

  • 答:確定不是零,舉個反例,若是是零的話,聲明一個class A[10]對象數組,而每個對象佔用的空間是零,這時就沒辦法區分A[0]、A[1]…A[9]了。
相關文章
相關標籤/搜索