青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

hellohuan

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  2 Posts :: 3 Stories :: 0 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

關(guān)鍵字mutable是C++中一個(gè)不常用的關(guān)鍵字,他只能用于類的非靜態(tài)和非常量數(shù)據(jù)成員
  我們知道一個(gè)對(duì)象的狀態(tài)由該對(duì)象的非靜態(tài)數(shù)據(jù)成員決定,所以隨著數(shù)據(jù)成員的改變,
  對(duì)像的狀態(tài)也會(huì)隨之發(fā)生變化!
  如果一個(gè)類的成員函數(shù)被聲明為const類型,表示該函數(shù)不會(huì)改變對(duì)象的狀態(tài),也就是
  該函數(shù)不會(huì)修改類的非靜態(tài)數(shù)據(jù)成員.但是有些時(shí)候需要在該類函數(shù)中對(duì)類的數(shù)據(jù)成員
  進(jìn)行賦值.這個(gè)時(shí)候就需要用到mutable關(guān)鍵字了

  例如:
   class Demo
  {
  public:
  Demo(){}
  ~Demo(){}
  public:
  bool getFlag() const
  {
  m_nAccess++;
  return m_bFlag;
  }
  private:
  int m_nAccess;
  bool m_bFlag;
  };
  int main()
  {
  return 0;
  }
 


  編譯上面的代碼會(huì)出現(xiàn) error C2166: l-value specifies const object的錯(cuò)誤
  說(shuō)明在const類型的函數(shù)中改變了類的非靜態(tài)數(shù)據(jù)成員.

  這個(gè)時(shí)候需要使用mutable來(lái)修飾一下要在const成員函數(shù)中改變的非靜態(tài)數(shù)據(jù)成員
  m_nAccess,代碼如下:

   class Demo
  {
  public:
  Demo(){}
  ~Demo(){}
  public:
  bool getFlag() const
  {
  m_nAccess++;
  return m_bFlag;
  }
  private:
  mutable int m_nAccess;
  bool m_bFlag;
  };
  int main()
  {
  return 0;
  }
 


  這樣再重新編譯的時(shí)候就不會(huì)出現(xiàn)錯(cuò)誤了!

volatile關(guān)鍵字

  volatile是c/c++中一個(gè)鮮為人知的關(guān)鍵字,該關(guān)鍵字告訴編譯器不要持有變量的臨時(shí)拷貝,它可以適用于基礎(chǔ)類型
  如:int,char,long......也適用于C的結(jié)構(gòu)和C++的類。當(dāng)對(duì)結(jié)構(gòu)或者類對(duì)象使用volatile修飾的時(shí)候,結(jié)構(gòu)或者
  類的所有成員都會(huì)被視為volatile.

  使用volatile并不會(huì)否定對(duì)CRITICAL_SECTION,Mutex,Event等同步對(duì)象的需要
  例如:
  int i;
  i = i + 3;
  無(wú)論如何,總是會(huì)有一小段時(shí)間,i會(huì)被放在一個(gè)寄存器中,因?yàn)樗阈g(shù)運(yùn)算只能在寄存器中進(jìn)行。一般來(lái)說(shuō),volatitle
  關(guān)鍵字適用于行與行之間,而不是放在行內(nèi)。

  我們先來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的函數(shù),來(lái)觀察一下由編譯器產(chǎn)生出來(lái)的匯編代碼中的不足之處,并觀察volatile關(guān)鍵字如何修正
  這個(gè)不足之處。在這個(gè)函數(shù)體內(nèi)存在一個(gè)busy loop(所謂busy loop也叫做busy waits,是一種高度浪費(fèi)CPU時(shí)間的循環(huán)方法)

   void getKey(char* pch)
  {
  while (*pch == 0)
  ;
  }


  當(dāng)你在VC開(kāi)發(fā)環(huán)境中將最優(yōu)化選項(xiàng)都關(guān)閉之后,編譯這個(gè)程序,將獲得以下結(jié)果(匯編代碼)

   ;       while (*pch == 0)
  $L27
  ; Load the address stored in pch
  mov eax, DWORD PTR _pch$[ebp]
  ; Load the character into the EAX register
  movsx eax, BYTE PTR [eax]
  ; Compare the value to zero
  test eax, eax
  ; If not zero, exit loop
  jne $L28
  ;
  jmp $L27
  $L28
  ;}


  這段沒(méi)有優(yōu)化的代碼不斷的載入適當(dāng)?shù)牡刂罚d入地址中的內(nèi)容,測(cè)試結(jié)果。效率相當(dāng)?shù)牡停墙Y(jié)果非常準(zhǔn)確

  現(xiàn)在我們?cè)賮?lái)看看將編譯器的所有最優(yōu)化選項(xiàng)開(kāi)關(guān)都打開(kāi)以后,重新編譯程序,生成的匯編代碼,和上面的代碼

  比較一下有什么不同

   ;{
  ; Load the address stored in pch
  mov eax, DWORD PTR _pch$[esp-4]
  ; Load the character into the AL register
  movsx al, BYTE PTR [eax]
  ; while (*pch == 0)
  ; Compare the value in the AL register to zero
  test al, al
  ; If still zero, try again
  je SHORT $L84
  ;
  ;}

 

從代碼的長(zhǎng)度就可以看出來(lái),比沒(méi)有優(yōu)化的情況要短的多。需要注意的是編譯器把MOV指令放到了循環(huán)之外。這在單線程中是一個(gè)非常好的優(yōu)化,但是,在多線程應(yīng)用程序中,如果另一個(gè)線程改變了變量的值,則循環(huán)永遠(yuǎn)不會(huì)結(jié)束。被測(cè)試的值永遠(yuǎn)被放在寄存器中,所以該段代碼在多線程的情況下,存在一個(gè)巨大的BUG。解決方法是重新

  寫(xiě)一次getKey函數(shù),并把參數(shù)pch聲明為volatile,代碼如下:

   void getKey(volatile char* pch)
  {
  while (*pch == 0)
  ;
  }


  這次的修改對(duì)于非最優(yōu)化的版本沒(méi)有任何影響,下面請(qǐng)看最優(yōu)化后的結(jié)果:

   ;{
  ; Load the address stored in pch
  mov eax, DWORD PTR _pch$[esp-4]
  ;       while (*pch == 0)
  $L84:
  ; Directly compare the value to zero
  cmp BYTE PTR [eax], 0
  ; If still zero, try again
  je SHORT $L84
  ;
  ;}


  這次的修改結(jié)果比較完美,地址不會(huì)改變,所以地址聲明被移動(dòng)到循環(huán)之外。地址內(nèi)容是volatile,所以每次循環(huán)
  之中它不斷的被重新檢查。

  把一個(gè)const volatile變量作為參數(shù)傳遞給函數(shù)是合法的。如此的聲明意味著函數(shù)不能改變變量的值,但是變量的
  值卻可以被另一個(gè)線程在任何時(shí)間改變掉。

  explicit關(guān)鍵字

  我們?cè)诰帉?xiě)應(yīng)用程序的時(shí)候explicit關(guān)鍵字基本上是很少使用,它的作用是"禁止單參數(shù)構(gòu)造函數(shù)"被用于自動(dòng)型別轉(zhuǎn)換,其中比較典型的例子就是容器類型,在這種類型的構(gòu)造函數(shù)中你可以將初始長(zhǎng)度作為參數(shù)傳遞給構(gòu)造函數(shù).

  例如:
  你可以聲明這樣一個(gè)構(gòu)造函數(shù)

   class Array
  {
  public:
  explicit Array(int size);
  ......
  };

  在這里explicit關(guān)鍵字起著至關(guān)重要的作用,如果沒(méi)有這個(gè)關(guān)鍵字的話,這個(gè)構(gòu)造函數(shù)有能力將int轉(zhuǎn)換成Array.一旦這種情況發(fā)生,你可以給Array支派一個(gè)整數(shù)值而不會(huì)引起任何的問(wèn)題,比如:

   Array arr;
  ...
  arr = 40;

  此時(shí),C++的自動(dòng)型別轉(zhuǎn)換會(huì)把40轉(zhuǎn)換成擁有40個(gè)元素的Array,并且指派給arr變量,這個(gè)結(jié)果根本就不是我們想要的結(jié)果.如果我們將構(gòu)造函數(shù)聲明為explicit,上面的賦值操作就會(huì)導(dǎo)致編譯器報(bào)錯(cuò),使我們可以及時(shí)發(fā)現(xiàn)錯(cuò)誤.需要注意的是:explicit同樣也能阻止"以賦值語(yǔ)法進(jìn)行帶有轉(zhuǎn)型操作的初始化";

 例如:
  Array arr(40);//正確
  Array arr = 40;//錯(cuò)誤


  看一下以下兩種操作:
  X x;
  Y y(x);//顯式類型轉(zhuǎn)換
  另一種
  X x;
  Y y = x;//隱式類型轉(zhuǎn)換

  這兩種操作存在一個(gè)小小的差別,第一種方式式通過(guò)顯式類型轉(zhuǎn)換,根據(jù)型別x產(chǎn)生了型別Y的新對(duì)象;第二種方式通過(guò)隱式轉(zhuǎn)換產(chǎn)生了一個(gè)型別Y的新對(duì)象.
  explicit關(guān)鍵字的應(yīng)用主要就是上面所說(shuō)的構(gòu)造函數(shù)定義種,參考該關(guān)鍵字的應(yīng)用可以看看STL源代碼,其中大量使用了該關(guān)鍵字

  __based關(guān)鍵字

  該關(guān)鍵字主要用來(lái)解決一些和共享內(nèi)存有關(guān)的問(wèn)題,它允許指針被定義為從某一點(diǎn)開(kāi)始算的32位偏移值,而不是內(nèi)存種的絕對(duì)位置
  舉個(gè)例子:

   typedef struct tagDEMOSTRUCT {
  int a;
  char sz[10];
  } DEMOSTRUCT, * PDEMOSTRUCT;
  HANDLE hFileMapping = CreateFileMapping(...);
  LPVOID lpShare = (LPDWORD)MapViewOfFile(...);

  DEMOSTRUCT __based(lpShare)* lpDemo;
 


  上面的例子聲明了一個(gè)指針lpDemo,內(nèi)部?jī)?chǔ)存的是從lpShare開(kāi)始的偏移值,也就是lpHead是以lpShare為基準(zhǔn)的偏移值.上面的例子種的DEMOSTRUCT只是隨便定義的一個(gè)結(jié)構(gòu),用來(lái)代表任意的結(jié)構(gòu).

  雖然__based指針使用起來(lái)非常容易,但是,你必須在效率上付出一定的代價(jià).每當(dāng)你用__based指針處理數(shù)據(jù),CPU都必須為它加上基地址,才能指向真正的位置.

  在這里我只是介紹了幾個(gè)并不時(shí)很常見(jiàn)的關(guān)鍵字的意義即用法,其他那些常見(jiàn)的關(guān)鍵字介紹他們的文章已經(jīng)不少了在這里就不再一一介紹了.希望這些內(nèi)容能對(duì)大家有一定的幫助!
 



在網(wǎng)上看到的介紹性文章,不錯(cuò)

 1. 保留字

  C++中,保留字也稱關(guān)鍵字,它是預(yù)先定義好的標(biāo)識(shí)符。見(jiàn)關(guān)鍵字的解釋。

  2.關(guān)鍵字

  C++中已經(jīng)被系統(tǒng)定義為特殊含義的一類標(biāo)識(shí)符。C++中的關(guān)鍵字有:




  3.標(biāo)識(shí)符

  對(duì)變量、函數(shù)、標(biāo)號(hào)和其它各種用戶自定義對(duì)象的命名。在C++中,標(biāo)識(shí)符長(zhǎng)度沒(méi)有限制,第一個(gè)字符必須是字母或下劃線,其后若有字符則必須為字母、數(shù)字或下劃線。例如count2,_x是正確的標(biāo)識(shí)符形式,而hello!,3th則是錯(cuò)誤的。在C++中標(biāo)識(shí)符區(qū)分大小寫(xiě),另外標(biāo)識(shí)符不能和C++中的關(guān)鍵字相同,也不能和函數(shù)同名。

  4.聲明

  將一個(gè)標(biāo)識(shí)符引入一個(gè)作用域,此標(biāo)識(shí)符必須指明類型,如果同時(shí)指定了它所代表的實(shí)體,則聲明也是定義。

  5.定義

  給所聲明的標(biāo)識(shí)符指定所代表的實(shí)體。

  6.變量

  某個(gè)作用域范圍內(nèi)的命名對(duì)象。

  7.常量

  常量是不接受程序修改的固定值,可以是任意數(shù)據(jù)類型。可以用后綴準(zhǔn)確的描述所期望的常量類型,如浮點(diǎn)類型常量在數(shù)字后加F,無(wú)符號(hào)整型常量加后綴U等等。此外還有串常量如"Please input year:",反斜線字符常量如\n表示回車符。

  8. const說(shuō)明符

  const是在變量聲明或函數(shù)聲明時(shí)所用到的一個(gè)修飾符,用它所修飾的實(shí)體具有只讀屬性。

  9. 輸入

  當(dāng)程序需要執(zhí)行鍵盤(pán)輸入時(shí),可以使用抽取操作付">>"從cin輸入流中抽取字符。如:

  int myAge;

  cin >> myAge;

  10.輸出

  當(dāng)程序需要在屏幕上顯示輸出時(shí),可以使用插入操作符"<<"向cout 輸出流中插入字符。如:

  cout << "This is a program. \n ";

  11.流

  流是既產(chǎn)生信息又消費(fèi)信息的邏輯設(shè)備,通過(guò)C++系統(tǒng)和物理設(shè)備關(guān)聯(lián)。C++的I/O系統(tǒng)是通過(guò)流操作的。有兩種類型的流:文本流,二進(jìn)制流。

  12.標(biāo)準(zhǔn)輸入輸出庫(kù)

  它是C++標(biāo)準(zhǔn)庫(kù)的組成部分,為C++語(yǔ)言提供了輸入輸出的能力。

  13.內(nèi)置數(shù)據(jù)類型

  由C++直接提供的類型,包括int、float、double、char 、bool、指針、數(shù)組和引用。

  14.字符類型

  包括 char、signed char、unsigned char三種類型。

  15.整數(shù)類型

  包括 short、 int、long 三種類型。

  16.long

  只能修飾 int , double.

  long int 指一種整數(shù)類型,它的長(zhǎng)度大于等于int型.

  long double 指長(zhǎng)雙精度類型,長(zhǎng)度大于等于double型。

  17.short

  一種長(zhǎng)度少于或等于int型的整數(shù)類型。

  18.signed

  由它所修飾的類型是帶符號(hào)的. 只能修飾 int 和 char .

  19.布爾型

  一種數(shù)據(jù)類型,其值可為:true, false 兩種。

  20.浮點(diǎn)類型

  包括float, double , long double 三種類型。其典型特征表現(xiàn)為有尾數(shù)或指數(shù)。

  21.雙精度類型

  浮點(diǎn)類型中的一種。在基本數(shù)據(jù)類型中它是精度最高,表示范圍最大的一種數(shù)據(jù)類型。

  22.void類型

  關(guān)鍵字之一,指示沒(méi)有返回信息。

  23.結(jié)構(gòu)類型

  類的一種,其成員默認(rèn)為public型。大多用作無(wú)成員函數(shù)的數(shù)據(jù)結(jié)構(gòu)。

  24.枚舉類型

  一種用戶自定義類型,由用戶定義的值的集合組成。

  25.類型轉(zhuǎn)換

  一種數(shù)據(jù)類型轉(zhuǎn)換為另一種,包括顯式,隱式兩種方式。

  26.指針

  一個(gè)保存地址或0的對(duì)象。

  27. 函數(shù)指針

  每個(gè)函數(shù)都有地址,指向函數(shù)地址的指針?lè)Q為函數(shù)指針,函數(shù)指針指向代碼區(qū)中的某個(gè)函數(shù),通過(guò)函數(shù)指針可以調(diào)用相應(yīng)的函數(shù)。其定義形式為:

  int ( * func ) ( char a, char b);

  28.引用

  為一個(gè)對(duì)象或函數(shù)提供的另一個(gè)名字。

  29.鏈表

  一種數(shù)據(jù)結(jié)構(gòu),由一個(gè)個(gè)有序的結(jié)點(diǎn)組成,每個(gè)結(jié)點(diǎn)都是相同類型的結(jié)構(gòu),每個(gè)結(jié)點(diǎn)都有一個(gè)指針成員指向下一個(gè)結(jié)點(diǎn)。

  30.數(shù)組

  數(shù)組是一個(gè)由若干同類型變量組成的集合。

  31.字符串

  標(biāo)準(zhǔn)庫(kù)中的一種數(shù)據(jù)類型,一些常用操作符如+=,==支持其操作。

  32.運(yùn)算符

  內(nèi)置的操作常用符號(hào),例如+,* ,& 等。

  33.單目運(yùn)算符

  只能對(duì)一個(gè)操作數(shù)進(jìn)行操作

  34.雙目運(yùn)算符

  可對(duì)兩個(gè)操作數(shù)進(jìn)行操作

  35.三目運(yùn)算符

  可對(duì)三個(gè)操作數(shù)進(jìn)行操作

  36.算術(shù)運(yùn)算符

  執(zhí)行算術(shù)操作的運(yùn)算符,包括:+,-,*,/,%。

  37.條件運(yùn)算符

  即"?: " 。

  其語(yǔ)法為:

  (條件表達(dá)式)?(條件為真時(shí)的表達(dá)式):(條件為假時(shí)的表達(dá)式)

  如:x = a < b ? a : b;

  相當(dāng)于:

  if ( a < b)

  x = a;

  else

  x = b;

  38.賦值運(yùn)算符

  即:" = "及其擴(kuò)展賦值運(yùn)算符

  39.左值

  能出現(xiàn)在賦值表達(dá)式左邊的表達(dá)式。

  40.右值

  能出現(xiàn)在賦值表達(dá)式右邊的表達(dá)式。

  41.運(yùn)算符的結(jié)合性

  指表達(dá)式中出現(xiàn)同等優(yōu)先級(jí)的操作符時(shí)該先做哪個(gè)的規(guī)定。

  42.位運(yùn)算符

  " & "," | " , " ^ "," >> "," << "

  43.逗號(hào)運(yùn)算符

  即" , "

  44.邏輯運(yùn)算符

  " && ", " || " ," ! "

  45.關(guān)系運(yùn)算符

  ">",">=","<=","< "," <= ","== "

  46.new運(yùn)算符

  對(duì)象創(chuàng)建的操作符。

  47.delete運(yùn)算符

  對(duì)象釋放操作符,觸發(fā)析構(gòu)函數(shù)。

  48.內(nèi)存泄露

  操作堆內(nèi)存時(shí),如果分配了內(nèi)存,就有責(zé)任回收它,否則這塊內(nèi)存就無(wú)法重新使用,稱為內(nèi)存泄漏。

  49.sizeof運(yùn)算符

  獲得對(duì)象在內(nèi)存中的長(zhǎng)度,以字節(jié)為單位。

  50.表達(dá)式

  由操作符和標(biāo)識(shí)符組合而成,產(chǎn)生一個(gè)新的值。

  51.算術(shù)表達(dá)式

  用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái),符合C++語(yǔ)法規(guī)則的式子。

  52.關(guān)系表達(dá)式

  用關(guān)系運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái),符合C++語(yǔ)法規(guī)則的式子。

  53.邏輯表達(dá)式

  用邏輯運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái),符合C++語(yǔ)法規(guī)則的式子。

  54.賦值表達(dá)式

  由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái),符合C++語(yǔ)法規(guī)則的式子。

  55.逗號(hào)表達(dá)式

  由逗號(hào)操作符將幾個(gè)表達(dá)式連接起來(lái),符合C++語(yǔ)法規(guī)則的式子。

  56.條件表達(dá)式

  由條件運(yùn)算符將運(yùn)算對(duì)象連接起來(lái),符合C++語(yǔ)法規(guī)則的式子。

  57.語(yǔ)句

  在函數(shù)中控制程序流程執(zhí)行的基本單位,如if語(yǔ)句,while語(yǔ)句,switch語(yǔ)句, do語(yǔ)句, 表達(dá)式語(yǔ)句等。

  58.復(fù)合語(yǔ)句

  封閉于大括號(hào){}內(nèi)的語(yǔ)句序列。

  59.循環(huán)語(yǔ)句

  for 語(yǔ)句, while 語(yǔ)句, do 語(yǔ)句三種。

  60.條件語(yǔ)句

  基于某一條件在兩個(gè)選項(xiàng)中選擇其一的語(yǔ)句稱為條件語(yǔ)句。
  61.成員函數(shù)

  在類中說(shuō)明的函數(shù)稱為成員函數(shù)。

  62.全局函數(shù)

  定義在所有類之外的函數(shù)。

  63.main函數(shù)

  由系統(tǒng)自動(dòng)調(diào)用開(kāi)始執(zhí)行C++程序的第一個(gè)函數(shù)

  64.外部函數(shù)

  在定義函數(shù)時(shí),如果冠以關(guān)鍵字extern,表示此函數(shù)是外部函數(shù)。

  65.內(nèi)聯(lián)函數(shù)

  在函數(shù)前加上關(guān)鍵字inline說(shuō)明了一個(gè)內(nèi)聯(lián)函數(shù),這使一個(gè)函數(shù)在程序行里進(jìn)行代碼擴(kuò)展而不被調(diào)用。這樣的好處是減少了函數(shù)調(diào)用的開(kāi)銷,產(chǎn)生較快的執(zhí)行速度。但是由于重復(fù)編碼會(huì)產(chǎn)生較長(zhǎng)代碼,所以內(nèi)聯(lián)函數(shù)通常都非常小。如果一個(gè)函數(shù)在類說(shuō)明中定義,則將自動(dòng)轉(zhuǎn)換成內(nèi)聯(lián)函數(shù)而無(wú)需用inline說(shuō)明。

  66.函數(shù)重載

  在同一作用域范圍內(nèi),相同的函數(shù)名通過(guò)不同的參數(shù)類型或參數(shù)個(gè)數(shù)可以定義幾個(gè)函數(shù),編譯時(shí)編譯器能夠識(shí)別實(shí)參的個(gè)數(shù)和類型來(lái)決定該調(diào)用哪個(gè)具體函數(shù)。需要注意的是,如果兩個(gè)函數(shù)僅僅返回類型不同,則編譯時(shí)將會(huì)出錯(cuò),因?yàn)榉祷仡愋筒蛔阋蕴峁┳銐虻男畔⒁允咕幾g程序判斷該使用哪個(gè)函數(shù)。所以函數(shù)重載時(shí)必須是參數(shù)類型或者數(shù)量不同。

  67.函數(shù)覆蓋

  對(duì)基類中的虛函數(shù),派生類以相同的函數(shù)名及參數(shù)重新實(shí)現(xiàn)之。

  68.函數(shù)聲明

  在C++中,函數(shù)聲明就是函數(shù)原型,它是一條程序語(yǔ)句,即它必須以分號(hào)結(jié)束。它有函數(shù)返回類型,函數(shù)名和參數(shù)構(gòu)成,形式為:

  返回類型 function (參數(shù)表);

  參數(shù)表包含所有參數(shù)的數(shù)據(jù)類型,參數(shù)之間用逗號(hào)分開(kāi)。如下函數(shù)聲明都是合法的。

  int Area(int length , int width ) ;

  或 int Area ( int , int ) ;

  69.函數(shù)定義

  函數(shù)定義與函數(shù)聲明相對(duì)應(yīng),指函數(shù)的具體實(shí)現(xiàn),即包括函數(shù)體。如:

  int Area( int length , int width )

  {

  // other program statement

  }

  70.函數(shù)調(diào)用

  指定被調(diào)用函數(shù)的名字和調(diào)用函數(shù)所需的信息(參數(shù))。

  71.函數(shù)名

  與函數(shù)體相對(duì),函數(shù)調(diào)用時(shí)引用之

  72.函數(shù)類型

  (1) 獲取函數(shù)并返回值。

  (2) 獲取函數(shù)但不返回值。

  (3) 沒(méi)有獲取參數(shù)但返回值。

  (4) 沒(méi)有獲取參數(shù)也不返回值。

  73.形式參數(shù)

  函數(shù)中需要使用變?cè)獣r(shí),將在函數(shù)定義時(shí)說(shuō)明需要接受的變?cè)@些變?cè)Q為形式參數(shù)。形式參數(shù)對(duì)應(yīng)于函數(shù)定義時(shí)的參數(shù)說(shuō)明。其使用與局部變量類似。

  74.實(shí)際參數(shù)

  當(dāng)需要調(diào)用函數(shù)時(shí),對(duì)應(yīng)該函數(shù)需要的變?cè)o出的數(shù)據(jù)稱為實(shí)際參數(shù)。

  75.值傳遞

  函數(shù)調(diào)用時(shí)形參僅得到實(shí)參的值,調(diào)用結(jié)果不會(huì)改變實(shí)參的值。

  76.引用傳遞

  函數(shù)調(diào)用時(shí)形參為實(shí)參的引用,調(diào)用結(jié)果會(huì)改變實(shí)參的值。

  77.遞歸

  函數(shù)的自我調(diào)用稱為遞歸。每次調(diào)用是應(yīng)該有不同的參數(shù),這樣遞歸才能終止。

  78.函數(shù)體

  與函數(shù)名相對(duì),指函數(shù)最外邊由{}括起來(lái)的部分。

  79.作用域

  指標(biāo)識(shí)符在程序中有效的范圍,與聲明位置有關(guān),作用域開(kāi)始于標(biāo)識(shí)符的生命處。分:局部作用域,函數(shù)作用域,函數(shù)原型作用域,文件作用域,類作用域。

  80.局部作用域

  當(dāng)標(biāo)識(shí)符的聲明出現(xiàn)在由一對(duì)花括號(hào)所括起來(lái)的一段程序內(nèi)時(shí),該標(biāo)示符的作用域從聲明點(diǎn)開(kāi)始到塊結(jié)束處為止,此作用域的范圍具有局部性。

  81.全局作用域

  標(biāo)識(shí)符的聲明出現(xiàn)在函數(shù),類之外,具有全局性。

  82.類作用域

  指類定義和相應(yīng)的成員函數(shù)定義范圍。

  83.全局變量

  定義在任何函數(shù)之外,可以被任一模塊使用,在整個(gè)程序執(zhí)行期間保持有效。當(dāng)幾個(gè)函數(shù)要共享同一數(shù)據(jù)時(shí)全局變量將十分有效,但是使用全局變量是有一定弊端的:全局變量將在整個(gè)程序執(zhí)行期間占有執(zhí)行空間,即使它只在少數(shù)時(shí)間被用到;大量使用全局變量將導(dǎo)致程序混亂,特別是在程序較復(fù)雜時(shí)可能引起錯(cuò)誤。

  84.局部變量

  定義在函數(shù)內(nèi)部的變量。局部變量只在定義它的模塊內(nèi)部起作用,當(dāng)該段代碼結(jié)束,這個(gè)變量就不存在了。也就是說(shuō)一個(gè)局部變量的生命期就是它所在的代碼塊的執(zhí)行期,而當(dāng)這段代碼再次被執(zhí)行時(shí)該局部變量將重新被初始化而不會(huì)保持上一次的值。需要注意的是,如果主程序和它的一個(gè)函數(shù)有重名的變量,當(dāng)函數(shù)被調(diào)用時(shí)這個(gè)變量名只代表當(dāng)前函數(shù)中的變量,而不會(huì)影響主程序中的同名變量。

  85.自動(dòng)變量

  由auto修飾,動(dòng)態(tài)分配存儲(chǔ)空間,存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中,對(duì)他們分配和釋放存儲(chǔ)空間的工作是由編譯系統(tǒng)自動(dòng)處理的。

  86.寄存器變量

  存儲(chǔ)在運(yùn)算器中的寄存器里的變量,可提高執(zhí)行效率。

  87.靜態(tài)變量

  由連接器分配在靜態(tài)內(nèi)存中的變量。

  88.類

  一種用戶自定義類型,有成員數(shù)據(jù),成員函數(shù),成員常量,成員類型組成。類是描敘C++概念的三個(gè)基本機(jī)制之一。

  89.外部變量

  由extern修飾的變量

  90.堆

  即自由存儲(chǔ)區(qū),new 和delete 都是在這里分配和釋放內(nèi)存塊。

  91.棧

  有兩個(gè)含義:(1)指內(nèi)存中為函數(shù)維護(hù)局部變量的區(qū)域。(2)指先進(jìn)后處的序列。

  92.抽象類

  至少包含一個(gè)純虛函數(shù)的類。抽象類不能創(chuàng)建對(duì)象,但可以創(chuàng)建指向抽象類的指針,多態(tài)機(jī)制將根據(jù)基類指針選擇相應(yīng)的虛函數(shù)。

  93.嵌套類

  在一個(gè)類里可以定義另一個(gè)類,被嵌入類只在定義它的類的作用域里有效。

  94.局部類

  在函數(shù)中定義的類。注意在函數(shù)外這個(gè)局部類是不可知的。由于局部類的說(shuō)明有很多限制,所以并不常見(jiàn)。

  95.基類

  被繼承的類稱為基類,又稱父類、超類或范化類。它是一些共有特性的集合,可以有其它類繼承它,這些類只增加它們獨(dú)有的特性。

  96.派生類

  繼承的類稱為派生類。派生類可以用來(lái)作為另一個(gè)派生類的基類,實(shí)現(xiàn)多重繼承。一個(gè)派生類也可以有兩個(gè)或兩個(gè)以上的基類。定義時(shí)在類名后加":被繼承類名"即可。

  97.父類

  即基類。見(jiàn)95基類的解釋。

  98.子類

  即派生類。見(jiàn)96派生類的解釋。

  99.對(duì)象

  有兩重含義:

  1. 內(nèi)存中含有某種數(shù)據(jù)類型值的鄰近的區(qū)域。

  2. 某種數(shù)據(jù)類型的命名的或未命名的變量。一個(gè)擁有構(gòu)造函數(shù)的類型對(duì)象在構(gòu)造函數(shù)完成構(gòu)造之前不能認(rèn)為是一個(gè)對(duì)象,在析構(gòu)函數(shù)完成析構(gòu)以后也不再認(rèn)為它是一個(gè)對(duì)象。

  100. 數(shù)據(jù)成員

  指類中存儲(chǔ)數(shù)據(jù)的變量。

  101.實(shí)例化

  即建立類的一個(gè)對(duì)象。

  102.構(gòu)造函數(shù)

  是一個(gè)類的實(shí)例的初始化函數(shù),將在生成類的實(shí)例時(shí)被自動(dòng)調(diào)用,用于完成預(yù)先的初始化工作。一個(gè)類可以有幾個(gè)構(gòu)造函數(shù),以不同的參數(shù)來(lái)區(qū)別,即構(gòu)造函數(shù)可以被重載,以便不同的情況下產(chǎn)生不同的初始化;也可以沒(méi)有構(gòu)造函數(shù),此時(shí)系統(tǒng)將調(diào)用缺省的空構(gòu)造函數(shù)。需要注意的是構(gòu)造函數(shù)沒(méi)有返回類型。

  103.成員初始化表

  成員初始化表可用于初始化類中的任何數(shù)據(jù)成員,放在構(gòu)造函數(shù)頭與構(gòu)造函數(shù)體之間,用":"與構(gòu)造函數(shù)頭分開(kāi),被初始化的數(shù)據(jù)成員的值出現(xiàn)在一對(duì)括弧之間,它們之間用逗號(hào)分開(kāi)。

  104.析構(gòu)函數(shù)

  是一個(gè)類的實(shí)例的回收函數(shù),將在該實(shí)例結(jié)束使用前被自動(dòng)調(diào)用,用于完成資源的釋放。一個(gè)類只可以有一個(gè)析構(gòu)函數(shù),當(dāng)析構(gòu)函數(shù)執(zhí)行后,該實(shí)例將不復(fù)存在。析構(gòu)函數(shù)同樣沒(méi)有返回值。

  105.虛析構(gòu)函數(shù)

  由virtual 修飾的析構(gòu)函數(shù),當(dāng)用基類指針釋放派生類對(duì)象時(shí)可根據(jù)它所指向的派生類對(duì)象釋放準(zhǔn)確的對(duì)象。

  106.繼承

  面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言的特點(diǎn)之一。即一個(gè)對(duì)象獲得另一個(gè)對(duì)象的特性的過(guò)程。如將公共屬性和服務(wù)放到基類中,而它的各派生類除了有各自的特有屬性和服務(wù)外還可以共享基類的公共屬性和服務(wù)。這樣的好處是容易建立體系,增強(qiáng)代碼重復(fù)性。

  107.單繼承

  一個(gè)派生類只有一個(gè)基類,成為單繼承。

  108.重繼承

  一個(gè)派生類擁有多個(gè)基類,成為多繼承。

  109.虛函數(shù)

  在基類中說(shuō)明為virtual并在派生類中重定義的函數(shù)。重定義將忽略基類中的函數(shù)定義,指明了函數(shù)執(zhí)行的實(shí)際操作。當(dāng)一個(gè)基類指針指向包含虛函數(shù)的派生對(duì)象時(shí),C++將根據(jù)指針指向的對(duì)象類型來(lái)決定調(diào)用哪一個(gè)函數(shù),實(shí)現(xiàn)了運(yùn)行時(shí)的多態(tài)性。這里的重定義類似于函數(shù)重載,不同的是重定義的虛函數(shù)的原型必須和基類中指定的函數(shù)原型完全匹配。構(gòu)造函數(shù)不能是虛函數(shù),而析構(gòu)函數(shù)則可以是。

  110.純虛函數(shù)

  在基類中只有聲明沒(méi)有實(shí)現(xiàn)的虛函數(shù)。形式為:

  virtual type funname(paralist)=0。這時(shí)基函數(shù)只提供派生類使用的接口,任何類要使用必須給出自己的定義。

  111.多態(tài)性

  給不同類型的實(shí)體提供單一接口。虛函數(shù)通過(guò)基類接口實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性,重載函數(shù)和模板提供了靜態(tài)多態(tài)性。

  112.復(fù)制構(gòu)造函數(shù)

  以自身類對(duì)象為參數(shù)的構(gòu)造函數(shù),如Z::Z(const Z&). 用在同類對(duì)象間進(jìn)行初始化。

  113.運(yùn)算符重載

  C++中可以重載雙目(如+,×等)和單目(如++)操作符,這樣可以使用戶像使用基本數(shù)據(jù)類型那樣對(duì)自定義類型(類)的變量進(jìn)行操作,增強(qiáng)了程序的可讀性。當(dāng)一個(gè)運(yùn)算符被重載后,它將具有和某個(gè)類相關(guān)的含義,同時(shí)仍將保持原有含義。

  114.靜態(tài)成員函數(shù)

  成員函數(shù)通過(guò)前面加static說(shuō)明為靜態(tài)的,但是靜態(tài)成員函數(shù)只能存取類的其他靜態(tài)成員,而且沒(méi)有this指針。靜態(tài)成員函數(shù)可以用來(lái)在創(chuàng)建對(duì)象前預(yù)初始化專有的靜態(tài)數(shù)據(jù)。

  115.靜態(tài)成員變量

  在成員變量之前加static關(guān)鍵字將使該變量稱為靜態(tài)成員變量,該類所有的對(duì)象將共享這個(gè)變量的同一拷貝。當(dāng)對(duì)象創(chuàng)建時(shí),所有靜態(tài)變量只能被初始化為0。使用靜態(tài)成員變量可以取代全局變量,因?yàn)槿肿兞渴沁`背面向?qū)ο蟮某绦蛟O(shè)計(jì)的封裝性的。

  116.私有成員

  只能由自身類訪問(wèn)的成員。

  117.保護(hù)成員

  只能由自身類及其派生類訪問(wèn)的成員。

  118.友元

  被某類明確授權(quán)可訪問(wèn)其成員的函數(shù)和類。

  119.友元函數(shù)

  在函數(shù)前加上關(guān)鍵字friend即說(shuō)明了一個(gè)友元函數(shù),友元函數(shù)可以存取類的所有私有和保護(hù)成員。友元在重載運(yùn)算符時(shí)有時(shí)是很有用的。

  120.友元類

  被某類明確授權(quán)可訪問(wèn)其成員的類

  121.例外處理

  報(bào)告局部無(wú)法處理某錯(cuò)誤的基本方式。由try., throw , catch組成。

  122.文件

  是用于從磁盤(pán)文件到終端或打印機(jī)的任何東西。流通過(guò)完成打開(kāi)操作與某文件建立聯(lián)系。

 
posted on 2008-07-25 17:34 炮灰九段 閱讀(504) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            伊人久久亚洲美女图片| 欧美欧美天天天天操| 国产精品综合久久久| 亚洲中字在线| 欧美一级理论性理论a| 好男人免费精品视频| 欧美黑人一区二区三区| 欧美精品播放| 欧美一区二区三区免费大片| 欧美一区二视频| 最新日韩欧美| 在线午夜精品| 亚洲国产精品尤物yw在线观看| 亚洲精品123区| 亚洲精品在线视频观看| 国产精品入口福利| 女生裸体视频一区二区三区| 欧美喷潮久久久xxxxx| 欧美一级午夜免费电影| 久久久亚洲精品一区二区三区 | 欧美性猛交xxxx乱大交退制版| 一区二区三区高清| 性刺激综合网| 99精品欧美一区二区三区综合在线| 亚洲主播在线| 最新高清无码专区| 亚洲欧美国产精品va在线观看| 亚洲高清资源| 亚洲欧美国产77777| 亚洲黄色免费网站| 欧美亚洲在线播放| 一区二区福利| 久久久久久亚洲精品中文字幕| 一区二区三区四区国产| 久久噜噜亚洲综合| 欧美一区亚洲二区| 欧美日韩亚洲一区二区三区| 久久人91精品久久久久久不卡| 欧美日本一区二区视频在线观看| 久久免费一区| 国产精品久久国产愉拍| 亚洲激情网站| 好看的亚洲午夜视频在线| 在线一区日本视频| 中文一区二区| 欧美伦理91i| 欧美激情一区二区三区成人| 狠狠色狠狠色综合人人| 亚洲欧美在线一区二区| 在线亚洲电影| 欧美另类在线播放| 亚洲激情偷拍| 亚洲老板91色精品久久| 蜜桃av综合| 另类欧美日韩国产在线| 国模套图日韩精品一区二区| 亚洲欧美成人综合| 欧美亚洲免费电影| 国产精品狼人久久影院观看方式| 亚洲精品自在久久| 亚洲视频在线观看视频| 欧美日韩一区高清| 一本大道久久精品懂色aⅴ| 99pao成人国产永久免费视频| 欧美1区2区3区| 亚洲日本欧美日韩高观看| 亚洲三级电影全部在线观看高清| 久久一区二区三区av| 欧美国产日韩精品| 亚洲日本电影| 欧美日韩在线播放一区二区| 夜夜嗨av色一区二区不卡| 亚洲一区在线看| 国产精品男gay被猛男狂揉视频| 一区二区三区欧美视频| 1024国产精品| 亚洲黄色av一区| 夜夜躁日日躁狠狠久久88av| 欧美午夜精品久久久久久浪潮| 一本久久知道综合久久| 午夜精品久久久久久久白皮肤 | 欧美成人精品h版在线观看| 亚洲大片在线| 亚洲调教视频在线观看| 国产精品视频一二三| 久久av一区二区三区亚洲| 欧美不卡在线| 亚洲性感激情| 狠狠色狠狠色综合日日tαg| 欧美精品v日韩精品v国产精品| 国产精品99久久久久久久女警 | 亚洲人www| 国产精品毛片一区二区三区| 久久精品在线观看| 亚洲精品女av网站| 亚洲欧美中文另类| 亚洲大胆在线| 国产精品豆花视频| 久久久久久九九九九| 亚洲精品免费电影| 久久一区视频| 亚洲一区二区精品视频| 精东粉嫩av免费一区二区三区| 欧美精品一区在线| 久久精品国产精品| 亚洲免费成人av| 另类图片综合电影| 午夜精品www| 99精品欧美一区| 国产精品免费视频观看| 欧美成人综合网站| 欧美专区在线观看| 亚洲午夜国产一区99re久久 | 中文国产亚洲喷潮| 亚洲电影免费观看高清完整版在线观看 | 亚洲精品1234| 狠狠入ady亚洲精品经典电影| 欧美日韩一区二区三区高清| 久久婷婷国产综合国色天香| 正在播放日韩| 亚洲精品乱码久久久久久黑人| 久久久美女艺术照精彩视频福利播放 | 亚洲乱码国产乱码精品精98午夜| 国产亚洲激情| 国产精品久久久久久久久动漫| 欧美成人一区二免费视频软件| 久久狠狠婷婷| 欧美亚洲一区| 亚洲欧美日本国产有色| 99香蕉国产精品偷在线观看| 欧美激情中文不卡| 美女国产一区| 蜜桃av一区二区| 久久激情视频| 欧美一区二区观看视频| 久久久久久一区二区三区| 亚洲欧美日韩精品久久亚洲区 | 久久婷婷丁香| 久久一区中文字幕| 久久精品国产亚洲aⅴ| 欧美一区二区三区男人的天堂| 亚洲一区二区三区精品视频| 亚洲婷婷综合久久一本伊一区| 亚洲在线网站| 午夜亚洲视频| 久久国产成人| 美女主播一区| 欧美区一区二区三区| 欧美日韩美女| 国产精品视频精品视频| 国产日本欧洲亚洲| 国内精品久久久久影院色| 在线看成人片| 日韩一级黄色大片| 国产精品99久久久久久www| 亚洲一区二区综合| 欧美在线视频免费| 乱中年女人伦av一区二区| 欧美成人日本| 这里只有精品丝袜| 欧美伊人久久| 欧美国产一区二区| 国产精品视频成人| 一区二区在线观看视频在线观看 | 欧美日韩一二三区| 国产亚洲精品aa| 亚洲国产一成人久久精品| 日韩亚洲不卡在线| 亚洲欧美日韩精品一区二区| 久久精品一区二区三区不卡| 欧美国产一区二区在线观看 | 久久亚洲二区| 亚洲免费成人av| 亚洲欧美电影在线观看| 麻豆成人在线观看| 日韩系列在线| 久久精品欧美日韩| 欧美日韩中文字幕精品| 国产一区二区三区四区三区四| 亚洲第一网站| 欧美亚洲综合网| 91久久精品国产| 久久精品成人| 欧美色道久久88综合亚洲精品| 国语对白精品一区二区| 在线一区亚洲| 欧美韩日视频| 午夜视频精品| 欧美午夜电影完整版| 狠狠色狠狠色综合日日tαg| 亚洲伊人久久综合| 欧美国产日产韩国视频| 性欧美18~19sex高清播放| 欧美日本二区| 亚洲黄色成人| 久久亚洲精品一区二区| 亚洲一区二区三区高清| 欧美日韩免费| 99在线精品观看| 欧美国产视频日韩|