欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C.C++程序員面試背誦題目

      時間:2019-05-12 18:56:06下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《C.C++程序員面試背誦題目》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C.C++程序員面試背誦題目》。

      第一篇:C.C++程序員面試背誦題目

      1.面向對象的程序設計思想是什么?

      答:把數(shù)據(jù)結構和對數(shù)據(jù)結構進行操作的方法封裝形成一個個的對象。

      2.什么是類?

      答:把一些具有共性的對象歸類后形成一個集合,也就是所謂的類。

      3.對象都具有的二方面特征是什么?分別是什么含義? 答:對象都具有的特征是:靜態(tài)特征和動態(tài)特征。

      靜態(tài)特征是指能描述對象的一些屬性; 動態(tài)特征是指對象表現(xiàn)出來的行為 ;

      4.在頭文件中進行類的聲明,在對應的實現(xiàn)文件中進行類的定義有什么意義?

      答:1這樣可以提高編譯效率,因為分開的話只需要編譯一次生成對應的.obj文件后,再次應用該類的地方,這個類就不會被再次編譯,從而大大提高了效率。

      2隱藏了代碼;

      5.在類的內部定義成員函數(shù)的函數(shù)體,這種函數(shù)會具備那種屬性? 答:這種函數(shù)會自動為內聯(lián)函數(shù),這種函數(shù)在函數(shù)調用的地方在編譯階段都會進行代碼替換。

      6.成員函數(shù)通過什么來區(qū)分不同對象的成員數(shù)據(jù)?為什么它能夠區(qū)分? 答:通過this指針來區(qū)分的,因為它指向的是對象的首地址。

      7.C++編譯器自動為類產(chǎn)生的四個缺省函數(shù)是什么?

      答:默認構造函數(shù),拷貝構造函數(shù),析構函數(shù),賦值函數(shù)。

      8.拷貝構造函數(shù)在哪幾種情況下會被調用?

      答:1.當類的一個對象去初始化該類的另一個對象時;

      2.如果函數(shù)的形參是類的對象,調用函數(shù)進行形參和實參結合時; 3.如果函數(shù)的返回值是類對象,函數(shù)調用完成返回時。

      9.構造函數(shù)與普通函數(shù)相比在形式上有什么不同?(構造函數(shù)的作用,它的聲明形式來分析)答:構造函數(shù)是類的一種特殊成員函數(shù),一般情況下,它是專門用來初始化對象成員變量的。

      構造函數(shù)的名字必須與類名相同,它不具有任何類型,不返回任何值。

      10.什么時候必須重寫拷貝構造函數(shù)?

      答:當構造函數(shù)涉及到動態(tài)存儲分配空間時,要自己寫拷貝構造函數(shù),并且要深拷貝。

      11.構造函數(shù)的調用順序是什么? 答:1.先調用基類構造函數(shù)

      2.按聲明順序初始化數(shù)據(jù)成員

      3.最后調用自己的構造函數(shù)。

      12.哪幾種情況必須用到初始化成員列表? 答:類的成員是常量成員初始化;

      類的成員是對象成員初始化,而該對象沒有無參構造函數(shù)。類的成員常變量時。

      13.什么是常對象?

      答:常對象是指在任何場合都不能對其成員的值進行修改的對象。

      14.靜態(tài)函數(shù)存在的意義?

      答:1靜態(tài)私有成員在類外不能被訪問,可通過類的靜態(tài)成員函數(shù)來訪問;

      2當類的構造函數(shù)是私有的時,不像普通類那樣實例化自己,只能通過靜態(tài)成員函數(shù)來調用構造函數(shù)。

      15.在類外有什么辦法可以訪問類的非公有成員? 答:友元,繼承,公有成員函數(shù)。

      16.什么叫抽象類?

      答:不用來定義對象而只作為一種基本類型用作繼承的類。

      17.運算符重載的意義?

      答:為了對用戶自定義數(shù)據(jù)類型的數(shù)據(jù)的操作與內定義的數(shù)據(jù)類型的數(shù)據(jù)的操作形式一致。

      18.不允許重載的5個運算符是哪些? 答:

      1..*(成員指針訪問運算符號)2.::域運算符

      3.sizeof 長度運算符號 4.?:條件運算符號 5..(成員訪問符)

      19.運算符重載的三種方式?

      答:普通函數(shù),友元函數(shù),類成員函數(shù)。

      20.流運算符為什么不能通過類的成員函數(shù)重載?一般怎么解決? 答:因為通過類的成員函數(shù)重載必須是運算符的第一個是自己,而對流運算的重載要求第一個參數(shù)是流對象。一般通過友元來解決。

      21.賦值運算符和拷貝構造函數(shù)的區(qū)別與聯(lián)系? 答:相同點:都是將一個對象copy到另一個中去。不同點:拷貝構造函數(shù)涉及到要新建立一個對象。

      22.在哪種情況下要調用該類的析構函數(shù)? 答:對象生命周期結束時。

      23.對象間是怎樣實現(xiàn)數(shù)據(jù)的共享的? 答:通過類的靜態(tài)成員變量來實現(xiàn)的。靜態(tài)成員變量占有自己獨立的空間不為某個對象所私有。

      24.友元關系有什么特性?

      答:單向的,非傳遞的,不能繼承的。

      25.對對象成員進行初始化的次序是什么? 答:它的次序完全不受它們在初始化表中次序的影響,只與成員對象在類中聲明的次序來決定的。

      26.類和對象之間的關系是什么?

      答:類是對象的抽象,對象是類的實例。

      27.對類的成員的訪問屬性有什么? 答:public,protected,private。

      28.const char *p,char * const p;的區(qū)別

      如果const位于星號的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量; 如果const位于星號的右側,const就是修飾指針本身,即指針本身是常量。

      29.是不是一個父類寫了一個virtual 函數(shù),如果子類覆蓋它的函數(shù)不加virtual ,也能實現(xiàn)多態(tài)? virtual修飾符會被隱形繼承的。

      virtual可加可不加,子類覆蓋它的函數(shù)不加virtual ,也能實現(xiàn)多態(tài)。

      30.函數(shù)重載是什么意思?它與虛函數(shù)的概念有什么區(qū)別? 函數(shù)重載是一個同名函數(shù)完成不同的功能,編譯系統(tǒng)在編譯階段通過函數(shù)參數(shù)個數(shù)、參數(shù)類型不同,即實現(xiàn)的是靜態(tài)的多態(tài)性。但是記?。翰荒軆H僅通過函數(shù)返回值不同來實現(xiàn)函數(shù)重載。而虛函數(shù)實現(xiàn)的是在基類中通過使用關鍵字virtual來申明一個函數(shù)為虛函數(shù),含義就是該函數(shù)的功能可能在將來的派生類中定義或者在基類的基礎之上進行擴展,系統(tǒng)只能在運行階段才能動態(tài)決定該調用哪一個函數(shù),所以實現(xiàn)的是動態(tài)的多態(tài)性。它體現(xiàn)的是一個縱向的概念,也即在基類和派生類間實現(xiàn)。

      31.構造函數(shù)和析構函數(shù)是否可以被重載,為什么? 答:構造函數(shù)可以被重載,析構函數(shù)不可以被重載。因為構造函數(shù)可以有多個且可以帶參數(shù),而析構函數(shù)只能有一個,且不能帶參數(shù)。

      32.如何定義和實現(xiàn)一個類的成員函數(shù)為回調函數(shù)? 答:

      所謂的回調函數(shù),就是預先在系統(tǒng)對函數(shù)進行注冊,讓系統(tǒng)知道這個函數(shù)的存在,以后,當某個事件發(fā)生時,再調用這個函數(shù)對事件進行響應。

      定義一個類的成員函數(shù)時在該函數(shù)名前加CALLBACK即將其定義為回調函數(shù),函數(shù)的實現(xiàn)和普通成員函數(shù)沒有區(qū)別 33.虛函數(shù)是怎么實現(xiàn)的? 答:簡單說來使用了虛函數(shù)表.34.抽象類不會產(chǎn)生實例,所以不需要有構造函數(shù)。錯

      35.從一個模板類可以派生新的模板類,也可以派生非模板類。對

      36.main 函數(shù)執(zhí)行以前,還會執(zhí)行什么代碼?

      答案:全局對象的構造函數(shù)會在main 函數(shù)之前執(zhí)行。

      37.當一個類A 中沒有申明任何成員變量與成員函數(shù),這時sizeof(A)的值是多少,如果不是零,請解釋一下編譯器為什么沒有讓它為零。(Autodesk)

      答案:肯定不是零。舉個反例,如果是零的話,聲明一個class A[10]對象數(shù)組,而每一個對象占用的空間是零,這時就沒辦法區(qū)分A[0],A[1]?了。

      38.delete與 delete []區(qū)別:

      delete只會調用一次析構函數(shù),而delete[]會調用每一個成員的析構函數(shù)。

      39.子類析構時要調用父類的析構函數(shù)嗎? 會調用,析構函數(shù)調用的次序是先派生類的析構后基類的析構,也就是說在基類的的析構調用的時候,派生類的信息已經(jīng)全部銷毀了

      40.繼承優(yōu)缺點。

      1、類繼承是在編譯時刻靜態(tài)定義的,且可直接使用,2、類繼承可以較方便地改變父類的實現(xiàn)。缺點:

      1、因為繼承在編譯時刻就定義了,所以無法在運行時刻改變從父類繼承的實現(xiàn)

      2、父類通常至少定義了子類的部分行為,父類的任何改變都可能影響子類的行為

      3、如果繼承下來的實現(xiàn)不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關系限制了靈活性并最終限制了復用性。

      41.解釋堆和棧的區(qū)別。

      棧區(qū)(stack)—

      由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。堆:一般由程序員分配釋放,若程序員不釋放,程序結束時可能由OS回收。

      42.一個類的構造函數(shù)和析構函數(shù)什么時候被調用,是否需要手工調用? 答:構造函數(shù)在創(chuàng)建類對象的時候被自動調用,析構函數(shù)在類對象生命期結束時,由系統(tǒng)自動調用。

      43.何時需要預編譯:

      總是使用不經(jīng)常改動的大型代碼體。

      程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。44.多態(tài)的作用? 主要是兩個:

      1.隱藏實現(xiàn)細節(jié),使得代碼能夠模塊化;擴展代碼模塊,實現(xiàn)代碼重用;

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

      45.虛擬函數(shù)與普通成員函數(shù)的區(qū)別?內聯(lián)函數(shù)和構造函數(shù)能否為虛擬函數(shù)?

      答案:區(qū)別:虛擬函數(shù)有virtual關鍵字,有虛擬指針和虛函數(shù)表,虛擬指針就是虛擬函數(shù)的接口,而普通成員函數(shù)沒有。內聯(lián)函數(shù)和構造函數(shù)不能為虛擬函數(shù)。

      46.構造函數(shù)和析構函數(shù)的調用順序? 析構函數(shù)為什么要虛擬? 答案:構造函數(shù)的調用順序:基類構造函數(shù)—對象成員構造函數(shù)—派生類構造函數(shù);析構函數(shù)的調用順序與構造函數(shù)相反。析構函數(shù)虛擬是為了防止析構不徹底,造成內存的泄漏。

      47.C++中類型為private的成員變量可以由哪些函數(shù)訪問? 只可以由本類中的成員函數(shù)和友員函數(shù)訪問

      48.請說出類中private,protect,public三種訪問限制類型的區(qū)別

      private是私有類型,只有本類中的成員函數(shù)訪問;protect是保護型的,本類和繼承類可以訪問;public是公有類型,任何類都可以訪問.49.類中成員變量怎么進行初始化?

      可以通過構造函數(shù)的初始化列表或構造函數(shù)的函數(shù)體實現(xiàn)。

      50.在什么時候需要使用“常引用”? 如果既要利用引用提高程序的效率,又要保護傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變,就應使用常引用。

      51.引用與指針有什么區(qū)別?

      答、1)引用必須被初始化,指針不必。

      2)引用初始化以后不能被改變,指針可以改變所指的對象。3)不存在指向空值的引用,但是存在指向空值的指針。

      52.描述實時系統(tǒng)的基本特性

      答、在特定時間內完成特定的任務,實時性與可靠性。

      54.全局變量和局部變量在內存中是否有區(qū)別?如果有,是什么區(qū)別? 答、全局變量儲存在靜態(tài)數(shù)據(jù)區(qū),局部變量在棧中。

      55.堆棧溢出一般是由什么原因導致的? 答、沒有回收垃圾資源

      56.什么函數(shù)不能聲明為虛函數(shù)? 答 構造函數(shù)(constructor)

      57..IP地址的編碼分為哪倆部分?

      答 IP地址由兩部分組成,網(wǎng)絡號和主機號。

      58..不能做switch()的參數(shù)類型是: 答、switch的參數(shù)不能為實型。

      59.如何引用一個已經(jīng)定義過的全局變量?

      答、可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯

      60.對于一個頻繁使用的短小函數(shù),在C語言中應用什么實現(xiàn),在C++中應用什么實現(xiàn)? 答、c用宏定義,c++用inline

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

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

      62.當一個類A 中沒有生命任何成員變量與成員函數(shù),這時sizeof(A)的值是多少,請解釋一下編譯器為什么沒有讓它為零。

      答案:為1。舉個反例,如果是零的話,聲明一個class A[10]對象數(shù)組,而每一個對象占用的空間是零,這時就沒辦法區(qū)分A[0],A[1]?了。

      63.簡述數(shù)組與指針的區(qū)別?

      數(shù)組要么在靜態(tài)存儲區(qū)被創(chuàng)建(如全局數(shù)組),要么在棧上被創(chuàng)建。指針可以隨時指向任意類型的內存塊。

      (1)修改內容上的區(qū)別 char a[] = “hello”;a[0] = ?X?;

      char *p = “world”;// 注意p 指向常量字符串

      p[0] = ‘X’;// 編譯器不能發(fā)現(xiàn)該錯誤,運行時錯誤(2)用運算符sizeof 可以計算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p 為指針得到的是一個指針變量的字節(jié)數(shù),而不是p 所指的內存容量。

      64.C++函數(shù)中值的傳遞方式

      有三種方式:值傳遞、指針傳遞、引用傳遞

      65.內存的分配方式 分配方式有三種,1、靜態(tài)存儲區(qū),是在程序編譯時就已經(jīng)分配好的,在整個運行期間都存在,如全局變量、常量。

      2、棧上分配,函數(shù)內的局部變量就是從這分配的,但分配的內存容易有限。

      3、堆上分配,也稱動態(tài)分配,如我們用new,malloc分配內存,用delete,free來釋放的內存。

      66.extern“C”有什么作用? extern “C”是由C++提供的一個連接交換指定符號,用于告訴C++這段代碼是C函數(shù)。這是因為C++編譯后庫中函數(shù)名會變得很長,與C生成的不一致,造成C++不能直接調用C函數(shù),加上extren “c”后,C++就能直接調用C函數(shù)了。

      extern “C”主要使用正規(guī)DLL函數(shù)的引用和導出 和 在C++包含C函數(shù)或C頭文件時使用。使用時在前面加上extern “c” 關鍵字即可。

      67.用什么函數(shù)開啟新進程、線程。答案:

      線程:CreateThread/AfxBeginThread等 進程:CreateProcess等

      68.SendMessage和PostMessage有什么區(qū)別

      答案:SendMessage是阻塞的,等消息被處理后,代碼才能走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被處理,代碼馬上走到PostMessage的下一行。

      69.CMemoryState主要功能是什么

      答案:查看內存使用情況,解決內存泄露問題。

      70.26、#include 和 #include “filename.h” 有什么區(qū)別? 答:對于#include ,編譯器從標準庫路徑開始搜索 filename.h 對于#include “filename.h”,編譯器從用戶的工作路徑開始搜索 filename.h

      71.處理器標識#error的目的是什么?

      答:編譯時輸出一條錯誤信息,并中止繼續(xù)編譯。

      72.#if!defined(AFX_…_HADE_H)#define(AFX_…_HADE_H)??

      #endif作用?

      防止該頭文件被重復引用。

      73.在定義一個宏的時候要注意什么?

      定義部分的每個形參和整個表達式都必須用括號括起來,以避免不可預料的錯誤發(fā)生

      74.數(shù)組在做函數(shù)實參的時候會轉變?yōu)槭裁搭愋停?數(shù)組在做實參時會變成指針類型。

      75.系統(tǒng)會自動打開和關閉的3個標準的文件是?(1)標準輸入----鍵盤---stdin(2)標準輸出----顯示器---stdout(3)標準出錯輸出----顯示器---stderr

      76..在Win32下 char, int, float, double各占多少位?(1)Char 占用8位(2)Int 占用32位(3)Float 占用32位(4)Double 占用64位

      77.strcpy()和memcpy()的區(qū)別?

      strcpy()和memcpy()都可以用來拷貝字符串,strcpy()拷貝以’