成年人在线观看视频免费,国产第2页,人人狠狠综合久久亚洲婷婷,精品伊人久久

c++經(jīng)典筆試題

  解答題:
 
  1. 如何判斷一段程序是由C 編譯程序還是由C++編譯程序編譯的?
 
  #ifdef__cplusplus
 
  cout<<“c++";
 
  #else
 
  cout<<"c";
 
  #endif
 
  2. c與c++的不同:
 
  從機(jī)制上看: c面向過程;c++面向?qū)ο螅峁╊?用c++編寫面向?qū)ο蟮某绦虮萩容易;
 
  從適用方向上看:c適用于要求代碼體積小,效率高的場合,如嵌入式(linux 核心用c寫,它要求執(zhí)行效率極高);
 
  C++適合上層復(fù)雜應(yīng)用;
 
  3. 面向?qū)ο蟮娜齻基本特征,并簡單敘述之?
 
  答:
 
  1. 封裝:將客觀事物抽象成類,每個類對數(shù)據(jù)和方法進(jìn)行保護(hù)(public,protected,private)
 
  2. 繼承:廣義的繼承有三種實現(xiàn)形式:
 
  實現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實現(xiàn)滯后到子類實現(xiàn))。前兩種(類繼承)和后一種(對象組合=>接口繼承以及純虛函數(shù))構(gòu)成了功能復(fù)用的兩種方式。
 
  3. 多態(tài):允許將子類類型的指針賦值給父類類型的指針。
 
  4. 多態(tài)的作用(基類指針,虛函數(shù)):
 
  1. 隱藏實現(xiàn)細(xì)節(jié),實現(xiàn)代碼模塊化;擴(kuò)展代碼模塊化,實現(xiàn)代碼重用;
 
  2. 接口重用;
 
  5. 類中的static成員不能被繼承;為類的所有對象共享;
 
  6. “引用”與“指針”的區(qū)別:
 
  @指針是一個變量;可以重復(fù)賦值將其指向其他內(nèi)存地址;
 
  @引用沒有定義,在聲明時必須進(jìn)行初始化,引用不占內(nèi)存空間(沒有引用的指針,也沒有引用的引用);
 
  引用一旦建立并初始化,就不再與其他變量關(guān)聯(lián);
 
  @不存在指向空值的引用,存在指向NULL的指針;
 
  什么是引用:
 
  引用時變量的別名,對其應(yīng)用的操作與對變量直接進(jìn)行操作效果完全相同;
 
  將引用作為函數(shù)參數(shù)有什么特點?
 
  (1)傳遞引用給函數(shù)與傳遞指針的效果是一樣的。被調(diào)函數(shù)的形參就成為原來主調(diào)函數(shù)中的實參變量或?qū)ο蟮囊粋別名來使用,所以在被調(diào)函數(shù)中對形參變量的操作就是對其相應(yīng)的目標(biāo)對象(在主調(diào)函數(shù)中)的操作。
 
  (2)使用引用傳遞函數(shù)的參數(shù),在內(nèi)存中并沒有產(chǎn)生實參的副本,它是直接對實參操作;而使用一般變量傳遞函數(shù)的參數(shù),當(dāng)發(fā)生函數(shù)調(diào)用時,需要給形參分配存儲單元,形參變量是實參變量的副本;如果傳遞的是對象,還將調(diào)用拷貝構(gòu)造函數(shù)。因此,當(dāng)參數(shù)傳遞的數(shù)據(jù)較大時,用引用比用一般變量傳遞參數(shù)的效率和所占空間都好。
 
  (3)使用指針作為函數(shù)的參數(shù)雖然也能達(dá)到與使用引用的效果,但是,在被調(diào)函數(shù)中同樣要給形參分配存儲單元,對指針?biāo)赶虻淖兞窟M(jìn)行間接操作,需要重復(fù)使用"*指針變量名"的形式進(jìn)行運(yùn)算,這很容易產(chǎn)生錯誤且程序的閱讀性較差;另一方面,在主調(diào)函數(shù)的調(diào)用點處,必須用變量的地址作為實參。而引用更容易使用,更清晰。
 
  除流操作符<<和>>、賦值操作符=的返回值、拷貝構(gòu)造函數(shù)的參數(shù)、賦值操作符=的參數(shù)、其它情況都推薦使用引用
 
  c++中將引用作為函數(shù)返回類型:
 
  1)使用引用作為函數(shù)的參數(shù)和返回值,效率更高;(在內(nèi)存中不產(chǎn)生被返回值的副本)
 
  2)返回變量,對象的引用,該變量,對象應(yīng)該在函數(shù)執(zhí)行前就存在,不能返回函數(shù)中的局部變量的引用;
 
  3 ) 不能返回函數(shù)內(nèi)部new分配的內(nèi)存的引用, 這個引用所指向的空間(由new分配)就無法釋放,造成memory leak.;
 
  4 ) 可以返回類成員的引用,但最好是const。主要原因是當(dāng)對象的屬性是與某種業(yè)務(wù)規(guī)則(business rule)相關(guān)聯(lián)的時候,其賦值常常與某些其它屬性或者對象的狀態(tài)有關(guān),因此有必要將賦值操作封裝在一個業(yè)務(wù)規(guī)則當(dāng)中。如果其它對象可以獲得該屬性的非常量引用(或指針),那么對該屬性的單純賦值就會破壞業(yè)務(wù)規(guī)則的完整性。
 
  5 ) 流操作符重載返回值申明為“引用”的作用:
 
  流操作符<<和>>,這兩個操作符常常希望被連續(xù)使用,例如:cout <<"hello" << endl; 因此這兩個操作符的返回值應(yīng)該是一個仍然支持這兩個操作符的流引用?蛇x的其它方案包括:返回一個流對象和返回一個流對象指針。但是對于返回一個流對象,程序必須重新(拷貝)構(gòu)造一個新的流對象,也就是說,連續(xù)的兩個<<操作符實際上是針對不同對象的!這無法讓人接受。對于返回一個流指針則不能連續(xù)使用<<操作符。因此,返回一個流對象引用是惟一選擇。賦值操作符=。這個操作符象流操作符一樣,是可以連續(xù)使用的,例如:x = j = 10;或者(x=10)=100;賦值操作符的返回值必須是一個左值,以便可以被繼續(xù)賦值。因此引用成了這個操作符的惟一返回值選擇。
 
  6 )在另外的一些操作符中,卻千萬不能返回引用:+-*/ 四則運(yùn)算符。主要原因是這四個操作符沒有side effect,因此,它們必須構(gòu)造一個對象作為返回值,可選的方案包括:返回一個對象、返回一個局部變量的引用,返回一個new分配的對象的引用、返回一個靜態(tài)對象引用。根據(jù)前面提到的引用作為返回值的三個規(guī)則,第2、3兩個方案都被否決了。靜態(tài)對象的引用又因為((a+b) == (c+d))會永遠(yuǎn)為true而導(dǎo)致錯誤。所以可選的只剩下返回一個對象了。
 
  引用與多態(tài)的關(guān)系:
 
  引用是除指針外另一個可以產(chǎn)生多態(tài)效果的手段。一個基類的引用可以指向它的派生類實例。
 
  Class A; Class B : Class A{...}; B b; A& ref = b;
 
  7. c++中private, public, protected 的區(qū)別:
 
  答:
 
  Private成員:只能被類的成員函數(shù)或者友元函數(shù)訪問;
 
  Public成員:可以被任何函數(shù)訪問;
 
  Protected成員:只能被類的成員函數(shù),友元,子類的成員函數(shù)與友元訪問;
本文已影響6827
上一篇:經(jīng)典c語言筆試題 下一篇:遠(yuǎn)洋地產(chǎn)筆試真題

相關(guān)文章推薦

|||||