我们应该指定"私人" c ++类中的标签?它有什么不同吗?

时间:2015-06-02 18:07:17

标签: c++ class

这可能不是最大的问题,但由于c ++中的类具有默认的所有属性和方法,因此指定它是否有任何意义?

这只是一个偏好问题吗?指定私有部分是否使代码看起来或多或少精通?

class User
{   
        string name;
        string surname;
        int miles;
        double balance; 

    public:
        User(string,string,int,double);

};

VS

class User
 {    
     private:
        string name;
        string surname;
        int miles;
        double balance; 

    public:
        User(string,string,int,double);

};

3 个答案:

答案 0 :(得分:4)

这都是风格和偏好。

例如,在我的团队中,我们宁愿在私有之前公开,因为人们通常从上到下阅读,更多的人会对如何使用感兴趣而不是如何实施(就像大多数人对驾驶汽车感兴趣而不是学习内燃机如何工作)。所以我们被迫使用private,因为我们列出了底部的那些,除非我们使用struct默认访问是公开的(在这种情况下我们可以省略public说明符,但我们通常不使用structs来保存类型,以指示简单的数据聚合。)

但这就是我们如何滚动。全取决于你。有些人可能会发现看到private说明符有助于避免在必须假设class的默认访问权时出错的明确性,例如这取决于你的团队动力,你想要强调的等等。

我认为风格偏好中唯一不那么主观的方面是,如果有一种风格更优越,那么它只是你的团队遵循始终的任何风格。如果最终可以通过风格标准实现任何目标,那只是:一致性。如果要向世界其他地方发布标题,则尤其如此(例如:作为软件开发工具包的一部分)。在那里,您不希望每个标题看起来像是由完全独立的人按照不同的标准集编写的。因此,如果您的团队一直很难跟踪它,那么有时候一个非常“异国情调”的标准会有很多特殊的规则和例外可能值得避免,无论它多么酷。或者他们可能没有。这一切都取决于。

答案 1 :(得分:3)

可提高可读性。像java这样的其他语言必须明确地创建类成员private。因为有一个名为default的访问修饰符 - 当我们不在类成员之前写任何访问修饰符时。因此,如果我们明确访问修饰符 - private,那么来自其他编程语言的人会更容易理解。当然,这是C++中的偏好问题。

答案 2 :(得分:1)

这只是一个偏好问题。

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;
};