gpt4 book ai didi

仅包含公共(public)函数的 C++ 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:15:27 25 4
gpt4 key购买 nike

我想要一个只包含公共(public)函数的类,例如:

class foo
{
public:
int f1(param1, param2) ;
void f2(param1, param2);
};

类没有状态,它只是操作输入参数,表现得像辅助类,

这是一个好的设计吗?或者需要特殊模式吗?模式的名称是什么?

最佳答案

简短回答:在命名空间内使用函数。

namespace foo
{
int f1(param1, param2);
void f2(param1, param2);
}

但是,如果您的应用程序采用 OO 设计,您应该问问自己,为什么需要一堆仅处理输入参数的函数。相信我:your code is trying to tell you something :-)

在您的代码片段中,您使用了虚拟名称(foo、f1、f2、param1、param2),因此我无法猜测您的函数的作用。但也许您的函数对相同的参数进行操作:在这种情况下,您可以将参数提升为一个类。

之前:

bool IsLeapYear( int date );
void IncrementDay( int date, int numOfDays );

之后:

class Date
{
public:
bool IsLeapYear() const;
void IncremetDay( int numOfDays );
private:
int daysFromOrigin;
};

相反,如果您的函数采用不同的参数,您可以考虑将函数分配给 OO 设计中的现有类(假设您确实需要 OO 设计!)。

最后,如果您的函数不相关,您可以考虑将它们中的每一个都作为静态方法移动到现有类中(这实际上取决于您的函数的含义)。

至于您的最后一个问题“这是一个好的设计吗?”,这取决于您正在进行的设计:

  • 面向对象的设计:它可能不是一个好的 OO 设计,但如果没有更多的上下文就很难说
  • 程序设计:没问题
  • 功能设计:没问题

虽然根据您的范例,这可能是也可能不是一个好的设计,这当然不是一个好的 C++ 习惯用法:您应该在命名空间内使用自由函数,而不是只有静态方法的类。

关于仅包含公共(public)函数的 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com