c++ - 在类或结构中调用静态函数的好习惯

标签 c++ function static

我想知道在 A 和 B 之间的类或结构中调用静态函数(和变量)的更好做法是什么。

A: ClassName::functionName();

B: functionName();

这是我的简单示例代码:

在头文件中,

typedef struct _mystruct
{
    static void myfunction();
} t_mystruct;

在 CPP 文件中,

void t_mystruct::myfunction()
{
   //do something
}

现在,在同一个 CPP 文件中,在 A 和 B 之间调用这个静态函数的更好做法是什么?

A: t_mystruct::myfunction();

B: myfunction();

最佳答案

直接调用 myfunction(); 只有在 t_mystruct 的实现中才可行。在这种情况下,您可以根据自己喜欢的编码风格进行操作:

// .h
struct t_mystruct // You can declare it directly that way
{
    static void myfunction();
    void myOtherFunction();
};

// .cpp
void t_mystruct::myOtherFunction()
{
   myfunction(); // That's fine!
   t_mystruct::myfunction(); // That's fine too!
}

否则,您必须明确使用其完全限定名称:

void anywhereElse()
{
   t_mystruct::myfunction(); // Mandatory
   myfunction(); // Does not compile
}

这适用于您的整个代码库,而不仅仅是所考虑的 .cpp 文件。

关于c++ - 在类或结构中调用静态函数的好习惯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51456180/

相关文章:

c++ - 使用模板类 boost python

c++ - 虚函数和纯虚函数的区别

c++ - 在实例之间的类成员函数内分离静态变量

c++ - 未定义对弱函数的引用(静态库+ GCC)

C++:可以在多个文件中调用静态变量吗?

c++ - 为 std::vector 分配几 GB 内存

c++ - 使用 C++ 读取其中包含空字节的二进制文件

c++ - LCG 中的 int 乘法溢出

python - 为什么函数以 "return 0"而不是 python 中的 "return"结尾?

JavaScript 匿名函数语法