簡體   English   中英

在C ++中每個類成員之前是可接受的用法訪問說明符

[英]Is acceptable usage access specifiers before each member of class in C++

我寫了一些代碼c ++

public class SomeClass 
{
private: 
   int m_CurrentStatus;
   int m_PreviouseStatus;
public:
   int get_CurrentStatus() { return m_CurrentStatus; }
   int get_PreviouseStatus() { return m_PreviouseStatus; }
}

在c#風格

public class SomeClass 
{
private:  int m_CurrentStatus;
private:  int m_PreviouseStatus;
public:   int get_CurrentStatus() { return m_CurrentStatus; }
public:   int get_PreviouseStatus() { return m_PreviouseStatus; }
}

在每個成員之前這樣的用法訪問說明符是可以接受的嗎? 或者麻煩編譯器花費更多時間進行編譯或其他效果? 代碼編譯成功,沒有警告。

你所描述的是合法的C ++。

對編譯時間的影響取決於編譯器。 但實際上,您可能很難發現編譯時間的任何差異。

對代碼可讀性可能有影響或有益 - 即人類理解正在發生的事情的能力。 通常,人們更喜歡“部分”(例如,單個訪問修飾符( publicprivateprotected )之后的幾個成員的聲明),只要這些部分不會變得太大(例如,填充超過屏幕時)編輯代碼)。 因此,按照您的方式進行操作可能不受其他開發人員的歡迎。 這是非常主觀的 - 不同的人會有不同的偏好。 但是,如果您發現其他人反對您的方法,請傾聽他們 - 除非您樂意與其他團隊成員不相處,失去工作等等。

對班級中的數據成員的布局可能有影響,也可能沒有影響。 不同版本的C ++標准提供了不同的保證,但編譯器有相當大的自由來布置不同的類。 如果您編寫的代碼依賴於(或測試)特定的類布局(數據成員的順序,偏移等),您可能會發現差異。 或者你可能不會。 但是,無論如何,允許這些內容在實現(編譯器)之間變化,因此編寫依賴於特定布局的代碼通常是一個壞主意。

它是合法的語法,不應該擾亂編譯器,你可以擁有任意數量的公共和私有塊。 我不認為它在語法上是一種改進。

這是C ++完全合法的語法,
除了class前的public關鍵字
並且在類的右大括號之后缺少分號( ; )。

但是我從來沒有見過這樣的東西,我想它肯定不常用,而且在我看來,它沒有增加代碼的可讀性(相反,我個人認為閱讀起來比較麻煩)。

它肯定是合法的,並且在每個類成員之前放置訪問說明符都沒有編譯時間的懲罰。 你也可以在每一行的末尾加上50個分號。 它根本不是規范的C ++。

它是合法的,也是非常正確的。 如果您希望公開您的成員,則不會使用面向對象的語言。 面向對象編程的基本用法是信息隱藏。

在你的情況下(在時間問題上)唯一可以使編譯器麻煩的是你的功能塊在類中。

我的意思是什么?

如果你有一個main.cpp和一個class.h,你的函數在class.h中聲明和定義,你的編譯需要更長的時間,而不是你的函數體是在functions.cpp中。

暫無
暫無

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

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