我们应该在 c++ 类中指定"private"标签吗?有什么区别吗?
Should we specify the "private" label in c++ classes? Does it make any difference?
这可能不是最大的问题,但是由于c++中的类在默认情况下具有所有属性和方法,因此指定它有任何意义吗?
这只是个人喜好的问题吗?指定私有部分会使代码看起来更熟练还是更不熟练?
class User
{
string name;
string surname;
int miles;
double balance;
public:
User(string,string,int,double);
};
和
class User
{
private:
string name;
string surname;
int miles;
double balance;
public:
User(string,string,int,double);
};
这都是风格和个人喜好的问题。
例如,在我的团队中,考虑到人们通常从上到下阅读,我们更喜欢public而不是private,并且更多的人会对如何使用类感兴趣而不是如何实现类(就像大多数人对驾驶汽车感兴趣,而不是学习内燃机如何工作)。因此,我们无论如何都被迫使用private
,因为我们列出了底部的那些,除非我们使用默认访问是公共的struct
(在这种情况下,我们可以省略public
说明符,但我们通常不使用structs
来节省输入,以指示简单的数据聚合)。
但这就是我们如何滚动。一切由你决定。有些人可能会发现看到private
说明符的显式性有助于避免必须假定class
的默认访问权限的错误,例如,它确实根据您的团队动态,您想要强调的内容等而变化。
我认为风格偏好的唯一不那么主观的方面是,如果有一种风格更优越,那就是你的团队始终遵循的任何风格。如果一个风格标准有什么最终要实现的,那就是:一致性。如果您要向世界其他地方发布头文件(例如:作为软件开发工具包的一部分),这一点尤其正确。在这里,您不希望每个标题看起来像是由遵循不同标准的完全独立的人编写的。所以有时候,如果你的团队很难始终遵循一个带有许多特殊规则和例外的"外来"标准,那么不管它有多酷,都值得避免。也可能不会。
可以增加可读性。其他一些语言,如java,必须显式地使类成员private
。因为有一个名为default
的访问修饰符——当我们不在类成员之前写任何访问修饰符时。因此,如果我们显式地使用访问修饰符private
,对于那些来自其他编程语言的人来说,这将更容易理解。当然,这是C++
的偏好问题。
这只是一个偏好的问题。
struct Foo
{
public: // These are already public; no need to write it
void a();
int b;
private: // You need this one though
char c;
};
同样:class Bar
{
private: // These are already private; no need to write it
void a();
int b;
public: // You need this one though
char c;
};
相关文章:
- std::make_shared和protected/private构造函数
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 如何正确指定 goto 语句的标签?
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 通过水平滚动条更改标签
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- 在C++中存储要输入的标签列表
- 如何在等效列表中查找最小的连接标签
- 标签检测鼠标单击 c++
- 无法将行编辑中的文本打印到 Qt C++ 中的标签
- 如何根据C++中的标签运行特定函数?
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- C++ Expat 仅打印元素的第一个字母和标签中的数据
- 默认标签显然在 switch 语句中不起作用
- 在 gcc/clang (C++) 中获取函数范围之外的标签地址
- C++ - "private"单身人士?
- 在"printf"中使用标签"h"或"hh"是否涉及未定义的
- GTK 3 C++按钮中带有标签的图标
- 将复制构造函数设置为private和=delete有什么区别
- 我们应该在 c++ 类中指定"private"标签吗?有什么区别吗?