c++ - 如何在 C++ 中对函数进行排序?

标签 c++ function

我不确定如何在 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/

相关文章:

c - 这两个参数在 typedef 中意味着什么?

c++ - 在其他函数中对结构 vector 和 vector 部分进行排序?

r - 自定义函数中的 for 循环以创建 ggplot 时间序列图

c++ - 在eclipse中运行C代码时出错

c++ - 是否可以创建可调整大小的 QMenu

c++ - 具有阈值函数的 OpenCV3 错误

javascript - 一个简单的 JavaScript 函数由于奇怪的错误而拒绝工作

c++ - vector 指针导致 valgrind 内存泄漏

c++ - 使用 Media Foundation SDK 进行直播

Javascript 函数未按正确顺序调用