繁体   English   中英

C ++ OOP:哪些函数可以放入类中?

[英]C++ OOP: Which functions to put into the class?

假设我有一个班级:

class a
{
public:
  void load_data( );
private:
  void check_data( );
  void work_data( );
  void analyze_data( );
}

这些函数都对类或其中一个成员执行某些操作。

但是这个功能:

bool validate_something( myType myData )
{
     if ( myData.blah > 0 && myData.blah < 100 )
     {
        return true;
     }
     return false;
}
  • 与类相关并且只会被它调用,因此在其他任何地方都不需要它

  • 对类或其成员不做任何事情 - 只是一个小的“实用程序”功能

在哪里放validate_something 课堂内外?

如果是一个功能

  • 课外不要求,并且,
  • 不需要访问类成员(或者作为参数的成员的自由函数可能有意义)

然后我倾向于使它成为实现文件中私有命名空间内的自由函数。 我不喜欢使用私有函数,因为它们在头文件中公开了实现细节(并且还没有遇到Neil的问题),我宁愿避免重新编译实现更改。

使其成为私有静态类成员。 我曾经倾向于创建这些非类成员并将它们放在实现文件中的无名空间中,但似乎它们几乎总是最终需要成为类成员(或者需要移动到其他地方 - 也许是为了验证库,在你的例子中),随着代码的变化,所以现在我几乎总是让它们成为静态成员。

请注意在整个答案中使用“几乎”作为限定符:-)

如果这个方法是一个只被类使用的实用程序,我会把它变成类的私有方法。 通过这种方式,它被封装而不是“污染”您的公共API。

假设myType也是一个struct / class,为什么不将validate_something作为myType的方法呢?

据我了解,这不是一种方法。 只需将它的定义放在cpp文件中,高于使用它的方法的定义。 如果您的所有方法定义都在您的类中内联您必须将函数的原型放在类定义上方的标题中,但该定义仍然可以在cpp文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM