【发布时间】:2010-10-22 01:23:51
【问题描述】:
在 C++ 中,有时在类定义中,首先声明公共成员,然后声明私有成员。但是变量或数据成员通常是私有的并由公共方法使用。因此,在这种情况下,使用了变量,但还没有声明。因此代码变得难以理解。但后来我找到了著名的程序员、网站或书籍来声明私有成员。有人知道是什么原因吗?
【问题讨论】:
在 C++ 中,有时在类定义中,首先声明公共成员,然后声明私有成员。但是变量或数据成员通常是私有的并由公共方法使用。因此,在这种情况下,使用了变量,但还没有声明。因此代码变得难以理解。但后来我找到了著名的程序员、网站或书籍来声明私有成员。有人知道是什么原因吗?
【问题讨论】:
同意。私有成员应该在底部声明。我发现首先声明私有成员的唯一充分理由是当函数需要获取或返回自定义数据类型时,例如:vector。编译器会询问你这是什么类型的数据。
但即便如此,我更愿意这样做:
{
private: /// advicing ofc theres more private below!
earlier declare just of the type
public:
private:
};
【讨论】:
私有成员和实现应该从头文件中隐藏。将私有成员定义放在底部是一种快速的方法。也许最好使用Pimpl idiom 并将类的私有部分隐藏在内部结构中。
【讨论】:
我们从上到下阅读文本,因此最相关的信息应该在顶部。在类定义中,这就是公共接口。
【讨论】:
我们是对立的:My Question
我的理由是,当您熟悉一个类时,首先介绍公共接口然后在需要时深入了解私有成员会更有益。如果您从查看私有成员开始,您将无法了解它们是如何使用的。
【讨论】:
通常私人成员无关紧要。如果我正在查看一个类以确定如何在代码中的其他地方使用它,我不关心它的内部结构,所以将私有成员放在底部,因为我不需要了解它们。如果我正在修改一个班级,那么我会花时间找到私人成员并知道他们会排在最后,而不必浏览整个班级。
【讨论】:
我这样做是因为我班级的用户不关心私有成员,他们对公共 API 感兴趣(即如何使用我的班级)。
另外,在头文件中,我通常只是声明成员函数,而不是定义它们,所以无论如何我都不会访问任何私有成员。
【讨论】:
struct 关键字?