是否需要为 C++中的一个或多个函数设置类
Is there a need to set up a class for one or several functions in C++
我对是否需要为一个或多个函数设置一个类感到困惑。我举了一个例子来阐明我的观点:
file1.h
void Fun1();
void Fun2();
file1.cpp
void Fun1() {}
void Fun2() {}
如您所见,我们这里有两个函数,使用这些函数的人只需要包含头文件,然后调用它们。然后,我还可以选择设置一个没有任何成员变量的类,但只针对这两个函数(假设这两个函数密切相关):
file1.h
class Operation
{
Operation() {};
~Operation() {};
void Fun1();
void Fun2();
};
file1.cpp
void Operation::Fun1() {};
void Operation::Fun2() {};
那么我的问题是哪种做法更好,为什么。谢谢。
你应该使用专用的命名空间
文件1.h:
namespace MyDedicatedNameSpace
{
void Fun1();
void Fun2();
}
文件1.cpp:
void MyDedicatedNameSpace::Fun1() {}
void MyDedicatedNameSpace::Fun2() {}
或者,如果要使用类,则应将这些函数设置为静态:
文件1.h:
class Operation
{
public:
static void Fun1();
static void Fun2();
};
文件1.cpp:
void Operation::Fun1() {};
void Operation::Fun2() {};
你不必"把它们放在一个类中,你可以同时进行这两种实现。这主要是一种设计偏好。Java 编码人员习惯于将这些函数作为实用程序类的静态函数,但C++您不必这样做,尽管有些人这样做。
如果您关心的只是在特定上下文中封装这些函数,则还可以考虑将它们放在命名空间中。
你想把它们放在一个类中应该是有原因的。如果只是用于分组,命名空间更适合此角色。
file1.h
namespace Operation
{
void Fun1();
void Fun2();
};
file1.cpp
namespace Operation
{
void Fun1(){};
void Fun2(){};
};
附言如果出于某种原因您仍然更喜欢使用 class,请至少将函数设为静态,这样您就不需要创建此类的实例。
file1.h
class Operation
{
public:
static void Fun1();
static void Fun2();
};
file1.cpp
void Operation::Fun1() {};
void Operation::Fun2() {};
既然你专门问了C++,最正确的答案是将它们命名为命名空间:
文件1.h:
namespace MyNamespace
{
void Fun1();
void Fun2();
}
文件1.cpp:
namespace MyNamespace
{
void Fun1() {}
void Fun2() {}
}
然后要使用它们,您只需调用MyNamespace::Fun1()
等。
正如我一开始所说,这对C++来说是最正确的。
如果你是为 C 或混合 C/C++ 编写的,应该注意 C 不支持命名空间。因此,在这种情况下,使它们成为类的静态函数将是一个更好的组织途径。
文件1.h
class MyClass
{
public:
static void Fun1();
static void Fun2();
};
文件1.c
void MyClass::Fun1() { }
void MyClass::Fun2() { }
注意:如果你正在做混合编程,你应该考虑让它更容易被包含,但这超出了这个问题的范围。
相关文章:
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何仅为一个函数添加延迟
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 我需要将多个函数组合为一个函数
- 在C++中声明一个函数时,它需要有函数本身的参数吗
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 如何将一个类的函数作为另一个类的另一个函数的参数传递
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 将 N-arg 函数包装到另一个函数中
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- C++从另一个函数退出函数
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 视觉我希望一个函数在另一个函数C++中进行计算
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- 在另一个函数 (c++) 中调用变量
- 如何在另一个函数中使用返回值作为参数?
- 如何包装一个函数以适应另一个函数的所需类型
- 创建一个函数的 Python 绑定,返回指向带有 boost 的向量的指针