国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++面試精選知識點(一)

2019-11-08 19:51:02
字體:
來源:轉載
供稿:網友

一、static(靜態)變量有什么作用?

 

答:在C語言中,關鍵字static的意思是靜態,它有3個明顯的作用:

1. 在函數體內,靜態變量具有“記憶功能”,即一個被聲明為靜態的變量在這一函數被調用的過程中其值保持不變。

2. 在模塊內(函數體外),它的作用域范圍是有限的,即如果一個變量被聲明為靜態的,那么該變量可以被模塊內的所有函數訪問,但是不能被模塊外的其它函數訪問。它是一個本地的全局變量,如果一個函數被聲明為靜態,那么該函數與普通函數作用于不同,其作用域僅在本文件中,它只可被這一模塊的其它函數調研,不能被模塊外的其它函數調用,也就是說這個函數被限制在聲明它的模塊的本地范圍內使用。

3. 內部函數應該在當前源文件中聲明和定義,對于可在當前源文件以外使用的函數,應該在頭一個文件中聲明,使用這些函數的源文件要包含這個頭文件。

 

  具體而言,static全局變量和普通全局變量的區別在于static全局變量只初始化一次,這樣做的目的是為了防止在其他文件但愿中被引用。Static局部變量和普通局部變量的區別在于static局部變量只被初始化一次,下一次的運算依據是上一次的結果值。Static()函數與普通函數的區別在于作用域不一樣,static(函數)只在一個源文件中有效,不能被其他源文件使用。

 

  C++中,在類內數據成員的聲明前面加上關鍵字static,該數據成員就是類內的靜態數據成員。靜態數據成員有以下特點:

  1. 對于非靜態數據成員,每個類對象都有自己的復制品,而靜態數據成員被當做類的成員,無論這個類的對象被定義了多少個,靜態數據成員在程序中也只有一個復制品,由該類的所有對象共享訪問。

  2. 靜態數據成員存儲在全區數據區,定義時要分配空間,所以不能在類聲明中定義。

  3. 靜態數據成員和普通成員函數一樣遵從public、PRotected、private訪問規則。

  4. static成員變量的初始化是在類外,此時不能再帶上static的關鍵字。Private、protected的static成員雖然可以在類外初始化,但是不能再類外被訪問。

  5. 類的靜態數據成員必須初始化,因為它是在程序初始化的時候分配的。

 

  與全局變量相比,使用靜態數據成員的有以下兩個優勢:

  1. 靜態數據成員沒有進入程序的全局名字空間,因此不存在與程序中其他全局名字沖突的可能性。

  2. 可以實現信息隱藏。靜態數據成員可以是private成員,而全局變量不能。

 

  對于所有類的對象(不僅僅是靜態對象),初始化都只有一次,而由于靜態變量具有“記憶”功能,初始化后,一直沒有被銷毀,而是保存在內存區域中,所以不會再次初始化。

 

二. const 有哪些作用?

 

答:常類型也稱const類型,是指使用類型修飾符const說明的類型。常類型的變量或對象的值是不能被更新的。

  一般而言,const有以下幾個方面的作用:

  1. 定義const常量,具有不可變性。

  2. 進行類型檢查,使編譯器對處理內容有更多的了解,消除一些隱患。

  3. 保護被修飾的東西,防止被意外的修改,增強程序的健壯性。

  4. 節省空間,避免不必要的內存分配。

  5. 提高程序的效率。編譯器通常不為普通的const常量分配存儲空間,而是將它們保存在符號中,這使得它成為一個編譯期間的常量,沒有存儲與讀內存的操作,使得它效率提高。

三.什么是常引用?

 

答:常引用葉城const引用。引入常引用是為了避免在使用變量的引用時,在毫不知情的情況下改變了變量的值,從而引起程序錯誤。常引用主要用于定義一個普通變量的只讀屬性的別名,作為函數的傳入形參,避免在實參調用函數中被意外的改變。

   如果既要利用引用提高程序的效率,又要保護傳遞給函數的數據在函數中不被改變,就應該使用常引用。常引用的主要用途有:

   1. 用作普通變量的只讀別名。

   2. 用于函數的形參。

四 static 關鍵字至少有下列n 個作用:

 

答:(1)函數體內static 變量的作用范圍為該函數體,不同于auto 變量,該變量的內存只被分配一次,因此其值在下次調用時仍維持上次的值;

(2)在模塊內的static 全局變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問;

(3)在模塊內的static 函數只可被這一模塊內的其它函數調用,這個函數的使用范圍被限制在聲明它的模塊內;

(4)在類中的static 成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝;

(5)在類中的static 成員函數屬于整個類所擁有,這個函數不接收this 指針,因而只能訪問類的static 成員變量。

五. const 關鍵字至少有下列n 個作用:

 

答:(1)欲阻止一個變量被改變,可以使用const 關鍵字。在定義該const 變量時,通常需要對它進行初始化,因為以后就沒有機會再去改變它了;

(2)對指針來說,可以指定指針本身為const,也可以指定指針所指的數據為const,或二者同時指定為const;

(3)在一個函數聲明中,const 可以修飾形參,表明它是一個輸入參數,在函數內部不能改變其值;

(4)對于類的成員函數,若指定其為const 類型,則表明其是一個常函數,不能修改類的成員變量;

(5)對于類的成員函數,有時候必須指定其返回值為const 類型,以使得其返回值不為“左值”.

 

六. C++中為什么用模板類。

 

答:(1)可用來創建動態增長和減小的數據結構

(2)它是類型無關的,因此具有很高的可復用性。

(3)它在編譯時而不是運行時檢查數據類型,保證了類型安全

(4)它是平臺無關的,可移植性

(5)可用于基本數據類型.

七. 程序什么時候應該使用線程,什么時候單線程效率高。

答:1.耗時的操作使用線程,提高應用程序響應

2.并行操作時使用線程,如C/S 架構的服務器端并發線程響應用戶的請求。

3.多CPU 系統中,使用線程提高CPU 利用率

4.改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。

 

其他情況都使用單線程。

八. 什么是“引用”?申明和使用“引用”要注意哪些問題?

 

答:引用就是某個目標變量的“別名”(alias),對應用的操作與對變量直接操作效果完全相同。申明一個引用的時候,切記要對其進行初始化。引用聲明完畢后,相當于目標變量名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名作為其他變量名的別名。聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不占存儲單元,系統也不給引用分配存儲單元。不能建立數組的引用。

九 將“引用”作為函數參數有哪些特點?

 

答:(1)傳遞引用給函數與傳遞指針的效果是一樣的。這時,被調函數的形參就成為原來主調函數中的實參變量或對象的一個別名來使用,所以在被調函數中對形參變量的操作就是對其相應的目標對象(在主調函數中)的操作。

(2)使用引用傳遞函數的參數,在內存中并沒有產生實參的副本,它是直接對實參操作;而使用一般變量傳遞函數的參數,當發生函數調用時,需要給形參分配存儲單元,形參變量是實參變量的副本;如果傳遞的是對象,還將調用拷貝構造函數。因此,當參數傳遞的數據較大時,用引用比用一般變量傳遞參數的效率和所占空間都好。

(3)使用指針作為函數的參數雖然也能達到與使用引用的效果,但是,在被調函數中同樣要給形參分配存儲單元,且需要重復使用"*指針變量名"的形式進行運算,這很容易產生錯誤且程序的閱讀性較差;另一方面,在主調函數的調用點處,必須用變量的地址作為實參。而引用更容易使用,更清晰。

十.在什么時候需要使用“常引用”?

 

答:如果既要利用引用提高程序的效率,又要保護傳遞給函數的數據不在函數中被改變,就應使用常引用。常引用聲明方式:const 類型標識符&引用名=目標變量名.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 肥乡县| 额尔古纳市| 白玉县| 鄄城县| 石棉县| 夏邑县| 潼关县| 西安市| 信阳市| 曲松县| 洞头县| 乾安县| 秦安县| 郸城县| 涪陵区| 丹寨县| 民勤县| 巴马| 叶城县| 古浪县| 伊川县| 龙海市| 广元市| 巴南区| 霍林郭勒市| 河池市| 南通市| 康定县| 河曲县| 彭山县| 苗栗县| 鄂伦春自治旗| 鹤庆县| 蛟河市| 三台县| 宜春市| 秦安县| 庆云县| 康平县| 遂昌县| 壤塘县|