簡體   English   中英

C ++中類的靜態成員

[英]static member of class in c++

我有一個關於c ++中類的靜態成員的問題,因為該靜態成員屬於該類而不是類的任何實例,所以該靜態成員應該聲明為public,private嗎?

聲明成員是公共成員還是私有成員與它是否是靜態無關。 您可以讓靜態成員成為公共成員或私有成員; 根據情況,兩種用途均可接受。

基本上,如果您希望或需要類外部的組件可以直接訪問靜態成員,則將其公開。 否則,將其設為私有。

實際上,靜態成員由該類的所有實例共享。 例如,如果它是數據成員,則可以使用來計算創建該類的實例的數量。 您可以根據需要將其聲明為私有或公共或受保護的。

您正在談論使某些靜態類成員對類私有,以便該類的實例無法訪問它們。 不幸的是,我認為c ++沒有可用於在編譯時強制執行的語法機制。 您也許可以進行運行時檢查,但至少可以說令人費解。

真的,我不確定您為什么要按照自己的要求去做。 如果您已經擁有並編輯該類,則還可以編輯所有實例方法以確保它們不使用靜態成員。 如果要嘗試執行它,則必須在靜態成員旁邊添加一個很大的注釋,說“實例方法不應使用此方法”,並確保您的團隊知道這一點。 通常,您不必對訪問修飾符(如public / private)保持虔誠以編寫良好的代碼,因此我只想說不要擔心嘗試執行您建議的內容。

其他面向對象的語言可以滿足您的要求,因為它們在類和實例之間產生了更多區別。 例如Scala,Smalltalk。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM