繁体   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