<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦>創業指南>職場>面試題>

        C/C++筆試面試題目

        時間: 護托1061 分享

          C語言是世界上最流行、使用最廣泛的高級程序設計語言之一。下面就由學習啦小編為大家介紹一下C/C++ 筆試、面試題目的文章,歡迎閱讀。

          C/C++ 筆試、面試題目篇1

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

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

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

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

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

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

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

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

          例1

          int a;

          constint&ra = a;

          ra = 1; // 錯誤

          a = 1; // 正確

          例2

          string foo( );

          void bar(string&s)

          // 那么下面的表達式將是非法的:

          bar(foo( ));

          bar("hello world");

          原因在于foo( )和"hello world"串都會產生一個臨時對象,而在C++中,這些臨時對象都是const類型的。因此上面的表達式就是試圖將一個const類型的對象轉換為非const類型,這是非法的。

          引用型參數應該在能被定義為const的情況下,盡量定義為const 。

          C/C++ 筆試、面試題目篇2

          1. “引用”與指針的區別是什么?

          指針通過某個指針變量指向一個對象后,對它所指向的變量間接操作。程序中使用指針,程序的可讀性差;

          而引用本身就是目標變量的別名,對引用的操作就是對目標變量的操作。此外,就是上面提到的對函數傳ref和pointer的區別。

          2. 什么時候需要“引用”?

          流操作符<<和>>、賦值操作符=的返回值、拷貝構造函數的參數、賦值操作符=的參數、其它情況都推薦使用引用。

          3. 結構與聯合有和區別?

          1. 結構和聯合都是由多個不同的數據類型成員組成, 但在任何同一時刻, 聯合中只存放了一個被選中的成員(所有成員共用一塊地址空間), 而結構的所有成員都存在(不同成員的存放地址不同)。

          2. 對于聯合的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對于結構的不同成員賦值是互不影響的。

          C/C++ 筆試、面試題目篇3

          1. 關聯、聚合(Aggregation)以及組合(Composition)的區別?

          涉及到UML中的一些概念:

          關聯是表示兩個類的一般性聯系,比如“學生”和“老師”就是一種關聯關系;

          聚合表示has-a的關系,是一種相對松散的關系,聚合類不需要對被聚合類負責,如下圖所示,用空的菱形表示聚合關系:

          從實現的角度講,聚合可以表示為:

          class A {...} class B { A* a; .....}

          組合表示contains-a的關系,關聯性強于聚合:組合類與被組合類有相同的生命周期,組合類要對被組合類負責,采用實心的菱形表示組合關系:

          實現的形式是:

          class A{...} class B{ A a; ...}

          2.面向對象的三個基本特征,并簡單敘述之?

          1. 封裝:將客觀事物抽象成類,每個類對自身的數據和方法實行protection(private, protected,public)

          2. 繼承:廣義的繼承有三種實現形式:實現繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實現代碼)、接口繼承(僅使用屬性和方法,實現滯后到子類實現)。前兩種(類繼承)和后一種(對象組合=>接口繼承以及純虛函數)構成了功能復用的兩種方式。

          3. 多態:系統能夠在運行時,能夠根據其類型確定調用哪個重載的成員函數的能力,稱為多態性。(見:C++中類的多態與虛函數的使用)

          3. 重載(overload)和重寫(overried,有的書也叫做“覆蓋”)的區別?

          ??嫉念}目。

          從定義上來說:

          重載:是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。

          重寫:是指子類重新定義父類虛函數的方法。

          從實現原理上來說:

          重載:編譯器根據函數不同的參數表,對同名函數的名稱做修飾,然后這些同名函數就成了不同的函數(至少對于編譯器來說是這樣的)。如,有兩個同名函數:function func(p:integer):integer;和function func(p:string):integer;。那么編譯器做過修飾后的函數名稱可能是這樣的:int_func、str_func。對于這兩個函數的調用,在編譯器間就已經確定了,是靜態的。也就是說,它們的地址在編譯期就綁定了(早綁定),因此,重載和多態無關!

          重寫:和多態真正相關。當子類重新定義了父類的虛函數后,父類指針根據賦給它的不同的子類指針,動態的調用屬于子類的該函數,這樣的函數調用在編譯期間是無法確定的(調用的子類的虛函數的地址無法給出)。因此,這樣的函數地址是在運行期綁定的(晚綁定)。

          4. 多態的作用?

          主要是兩個:

          1. 隱藏實現細節,使得代碼能夠模塊化;擴展代碼模塊,實現代碼重用;

          2. 接口重用:為了類在繼承和派生的時候,保證使用家族中任一類的實例的某一屬性時的正確調用。

          5. Ado與Ado.net的相同與不同?

          除了“能夠讓應用程序處理存儲于DBMS 中的數據“這一基本相似點外,兩者沒有太多共同之處。但是Ado使用OLE DB 接口并基于微軟的COM 技術,而ADO.NET 擁有自己的ADO.NET 接口并且基于微軟的.NET 體系架構。眾所周知.NET 體系不同于COM 體系,ADO.NET 接口也就完全不同于ADO和OLE DB 接口,這也就是說ADO.NET 和ADO是兩種數據訪問方式。ADO.net 提供對XML 的支持。

          6. New delete 與mallocfree 的聯系與區別?

          答案:都是在堆(heap)上進行動態的內存操作。用malloc函數需要指定內存分配的字節數并且不能初始化對象,new 會自動調用對象的構造函數。delete 會調用對象的destructor,而free 不會調用對象的destructor.

          (可以看看:顯式調用構造函數和析構函數)

          7. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?

          答案:i 為30。(注意直接展開就是了) 5 * 5 + 5

          8. 有哪幾種情況只能用intializationlist 而不能用assignment?

          答案:當類中含有const、reference 成員變量;基類的構造函數都需要初始化表。

          9. C++是不是類型安全的?

          答案:不是。兩個不同類型的指針之間可以強制轉換(用reinterpret cast)。C#是類型安全的。

          10. main 函數執行以前,還會執行什么代碼?

          答案:全局對象的構造函數會在main 函數之前執行,為malloc分配必要的資源,等等。

          11. 描述內存分配方式以及它們的區別?

          1) 從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變量,static 變量。

          2) 在棧上創建。在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置于處理器的指令集。

          3) 從堆上分配,亦稱動態內存分配。程序在運行的時候用malloc 或new 申請任意多少的內存,程序員自己負責在何時用free 或delete 釋放內存。動態內存的生存期由程序員決定,使用非常靈活,但問題也最多。

          4) 代碼區。

        3158142 主站蜘蛛池模板: 玩弄放荡人妻少妇系列| 国产亚洲日韩一区二区三区| 熟妇人妻中文字幕| 国产精品亚洲欧美大片在线看| 日韩AV中文无码影院| 国产成人精品自在钱拍| 麻豆一区二区三区精品视频| 绯色蜜臀av一区二区不卡| 久草热在线视频免费播放| 国产精品青青在线观看爽香蕉| 久久日韩精品一区二区五区| 性欧美乱熟妇xxxx白浆| 久久国产乱子伦精品免费乳及| 久爱免费观看在线精品| 国产无遮挡裸体免费久久| 亚洲国内精品一区二区| 午夜视频免费试看| 久久人人妻人人爽人人爽| 老熟妇喷水一区二区三区| 亚洲人成色99999在线观看| 成年女人片免费视频播放A| 麻豆人妻| 日韩深夜免费在线观看| 久久天堂av综合色无码专区| 少妇午夜福利一区二区三区| 精品国产这么小也不放过| a级国产乱理伦片在线观看al| 和艳妇在厨房好爽在线观看| 中文字幕国产精品日韩| 国产a在亚洲线播放| 日本久久久www成人免费毛片丨| 亚洲国产成人精品无码区蜜柚| 日韩av爽爽爽久久久久久 | 国内熟妇与亚洲洲熟妇妇| 亚洲精品一区二区三区在| 亚洲日韩久久综合中文字幕| 免费区欧美一级猛片| 午夜福利电影| 2021av在线天堂网| 国产成人精品亚洲日本片| 亚洲国产精品日韩在线|