日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
怎樣進行C++靜態(tài)構(gòu)造函數(shù)?

函數(shù)是C++ 語言程序的主要組成部分,一個函數(shù)可以調(diào)用其他函數(shù)。在設(shè)計良好的程序中,每個函數(shù)都有特定的目的,也就是在創(chuàng)建***個實例或引用任何靜態(tài)成員之前,由.NET自動調(diào)用。

靜態(tài)構(gòu)造函數(shù)是C++的一個新特性,其實好像很少用到。不過當(dāng)我們想初始化一些靜態(tài)變量的時候就需要用到它了。這個構(gòu)造函數(shù)是屬于類的,而不是屬于哪里實例的,就是說這個構(gòu)造函數(shù)只會被執(zhí)行一次。

以下是引用片段:

 
 
 
  1.  class SimpleClass   
  2.   {   
  3.   // Static constructor   
  4.   static SimpleClass()   
  5.   {   
  6.   //   
  7.   }   
  8.   } 

在使用C++靜態(tài)構(gòu)造函數(shù)的時候應(yīng)該注意幾點:

1、靜態(tài)構(gòu)造函數(shù)既沒有訪問修飾符,也沒有參數(shù)。因為是.NET調(diào)用的,所以像public和private等修飾符就沒有意義了。

2、是在創(chuàng)建***個類實例或任何靜態(tài)成員被引用時,.NET將自動調(diào)用靜態(tài)構(gòu)造函數(shù)來初始化類,也就是說我們無法直接調(diào)用靜態(tài)構(gòu)造函數(shù),也就無法控制什么時候執(zhí)行靜態(tài)構(gòu)造函數(shù)了。

3、一個類只能有一個靜態(tài)構(gòu)造函數(shù)。

4、無參數(shù)的構(gòu)造函數(shù)可以與靜態(tài)構(gòu)造函數(shù)共存。盡管參數(shù)列表相同,但一個屬于類,一個屬于實例,所以不會沖突。

5、最多只運行一次。

6、靜態(tài)構(gòu)造函數(shù)不可以被繼承。

7、如果沒有寫C++靜態(tài)構(gòu)造函數(shù),而類中包含帶有初始值設(shè)定的靜態(tài)成員,那么編譯器會自動生成默認的C++靜態(tài)構(gòu)造函數(shù)。

現(xiàn)在我們來看構(gòu)造函數(shù)中冒號初始化和函數(shù)初始化的問題,類構(gòu)造函數(shù)的作用是創(chuàng)建一個類的對象時,調(diào)用它來構(gòu)造這個類對象的數(shù)據(jù)成員。一要給出此數(shù)據(jù)成員分配內(nèi)存空間,二是要給函數(shù)數(shù)據(jù)成員初始化,構(gòu)造數(shù)據(jù)成員是按數(shù)據(jù)成員在類中聲明的順序進行構(gòu)造。

冒號初始化與函數(shù)體初始化的區(qū)別在于:

冒號初始化是給數(shù)據(jù)成員分配內(nèi)存空間時就進行初始化,就是說分配一個數(shù)據(jù)成員只要冒號后有此數(shù)據(jù)成員的賦值表達式(此表達式必須是括號賦值表達式)。那么分配了內(nèi)存空間后在進入函數(shù)體之前給數(shù)據(jù)成員賦值。

就是說初始化這個數(shù)據(jù)成員此時函數(shù)體還未執(zhí)行。 所以在C++中就增加了這種機制,這是面向?qū)ο缶幊趟仨毜?。不知道我講明白沒有。如不明白請查閱有關(guān)資料。在上面的程序中通不過編譯。

編譯系統(tǒng)會告訴你teacher這個類對象缺默認構(gòu)造函數(shù),因為在teach 類中沒有定義默認的構(gòu)造函數(shù)。那么帶參數(shù)的構(gòu)造函數(shù)怎么進行構(gòu)造呢?通過我們前面提到的冒號賦值。在Student類中有兩個數(shù)據(jù)成員。

一個是常量數(shù)據(jù)成員,一個是引用數(shù)據(jù)成員,并且在構(gòu)造函數(shù)中初始化了這兩個數(shù)據(jù)成員,但是這并不能通過編譯,因為常量初始化時必須賦值,它的值是不能再改變的,與常量一樣引用初始化也需要賦值,定義了引用后,它就和引用的目標維系在了一起,也是不能再被賦值的?! ?


網(wǎng)站欄目:怎樣進行C++靜態(tài)構(gòu)造函數(shù)?
文章位置:http://m.5511xx.com/article/djodpih.html