我不确定如何在 C++ 中对我的函数进行排序。在 C 语言中,我只是将一个使用另一个函数的函数放置在该函数下方,尽可能靠近 - 这很常见。像这样:
void bar()
{
}
void foo()
{
bar();
}
但是,在 C++ 中,有几种类型的函数:
- 免费功能
- 私有(private)成员函数
- 公共(public)成员函数
- 静态成员函数
我目前正在根据它们在 .hpp 文件中的排序方式制定我的函数顺序,例如:
class Foo_bar {
public:
Foo_bar();
void foo();
private:
int some_member;
void bar();
但是现在,如果构造函数使用 foo() 或 bar(),它们将位于源文件中构造函数的下方,这与我通常的顺序不一致。我当然可以重新排序我的标题以考虑到这一点:
class Foo_bar {
private:
int some_member;
void bar();
public:
void foo();
Foo_bar();
但我认为那是一团糟。
此外,在 Java 中,与我的第一个示例相反的情况似乎很常见:
void foo()
{
bar();
}
void bar()
{
}
这可能是由于 OOP 中常见的自上而下的思维方式,与过程/函数式编程中常见的自下而上的思维方式形成对比。然而,对于没有原型(prototype)的自由函数,这种自上而下的风格是不可能的。
是否有可能以一致的方式对 C++ 中的函数进行排序?
最佳答案
这是可能的。你必须使用 forward declaration .
先声明一个函数,再定义它,其他函数即使之前定义了,也能看到它没有问题。
因此,您应该能够在 C++ 中执行此操作:
void bar(); // forward declaration; note that function bar isn't defined yet
void foo()
{
bar(); // foo knows that bar is declared, so it will search for bar's definition
}
void bar() // here bar is defined, so foo will use this when needed
{
}
关于c++ - 如何在 C++ 中对函数进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296924/