C++ 如何组织课堂';s的成员功能?

C++ 如何组织课堂';s的成员功能?,c++,member-functions,C++,Member Functions,我将“set”放在构造函数后面,因为它与对象设置相关。我将get(在查询中放入get)和set分开,但不确定这是否好。组织会员活动的最佳实践是什么 怎么样? class Foo { // Friends go here if it has friend ...; friend ...; // First public, then protected and private public: // enums enum {...} // type defines.

我将“set”放在构造函数后面,因为它与对象设置相关。我将get(在查询中放入get)和set分开,但不确定这是否好。组织会员活动的最佳实践是什么

怎么样?

class Foo
{
// Friends go here if it has
friend ...;
friend ...;

// First public, then protected and private
public:
    // enums
    enum {...}

    // type defines.
    typedef ...;
    ...

    // Destructor and constructors
    ~Foo();
    Foo(...);
    Foo(...);
    ...

    // Sets.
    void setA(...);
    void setB(...);
    void setC(...);
    ...

    // Inquiries (including gets).
    A a() const;
    B b() const;
    ...

    // Operators.
    void operator()(...);
    ...

    // Operations.
    void doSomething();
    ...

protected:

private:
};

很难判断,这取决于你的个人喜好或公司编码标准。通过查看您的代码,我可能不同意以下几点:

  • 您的声明不是从
    pubilc
    ,“受保护”然后是“私有”排序的
  • friend
    当您在私人区域声明它们时,声明也有同样的效果。所以我通常把它们放在私密区,这样在
    公共区
    的噪音就小了

以下是我通常使用的声明顺序:

在类中使用指定的声明顺序:
public
:before
private
:,方法在数据成员(变量)之前,等等

类定义应该从它的
公共
:节开始,然后是它的
受保护
:节,然后是它的
私有
:节。如果其中任何部分为空,请忽略它们

在每个章节中,声明通常应按以下顺序进行:

Typedefs and Enums
Constants (static const data members)
Constructors
Destructor
Methods, including static methods
Data Members (except static const data members)

好友声明应始终位于private部分,禁用的复制构造函数和其他运算符应位于private:部分的末尾。这应该是班上最后一件事了

这个问题没有真正的答案,这完全取决于你自己的喜好。如果你正在做一个现有的项目,或者你有一些指导方针要遵循,你当然应该遵循这些惯例,但否则一切都取决于你。谁说枚举不应该出现在类的公共部分?这就是我投票结束这个问题的原因,因为它是基于观点的。@JoachimPileborg我之前读过一些关于public enum的链接,但是,我很难找到它们。我现在将删除该部分。:)@billz
friend
与OP一起在
private
中。另外:你忘记了类型(除了枚举,还有类、结构等)@Walter实际上我的意思是他应该把它移到类的底部。我确实在
Typedefs
@billz中提到了类型是的,您提到了
Typedefs
,但没有提到
class
es,它们完全在(外部)类定义中定义。