我不知道如何在C++中订购我的函数.在C中,我只是放置了一个函数,该函数使用该函数下面的另一个函数,尽可能接近 - 这很常见.像这样:
void bar()
{
}
void foo()
{
bar();
}
Run Code Online (Sandbox Code Playgroud)
但是,在C++中,有几种类型的函数:
我目前正在使我的函数顺序依赖于它们在.hpp文件中的排序方式,例如:
class Foo_bar {
public:
Foo_bar();
void foo();
private:
int some_member;
void bar();
Run Code Online (Sandbox Code Playgroud)
但是现在,如果构造函数使用foo()或bar(),它们将位于源文件中的构造函数下方,与我通常的顺序不一致.我当然可以重新排序我的标题以考虑到这一点:
class Foo_bar {
private:
int some_member;
void bar();
public:
void foo();
Foo_bar();
Run Code Online (Sandbox Code Playgroud)
但我认为那是一团糟.
此外,在Java中,与我的第一个示例相反似乎很常见:
void foo()
{
bar();
}
void bar()
{
}
Run Code Online (Sandbox Code Playgroud)
这可能是由于OOP中常见的自上而下的思维,与程序/函数式编程中常见的自下而上的思维形成鲜明对比.但是,对于没有原型的自由函数,这种自上而下的风格是不可能的.
甚至可以以一致的方式在C++中命令函数吗?
这是可能的.你必须使用前瞻声明.
在定义函数之前声明一个函数,即使之前定义了函数,其他函数也会看到它没有问题.
所以,你应该能够用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
{
}
Run Code Online (Sandbox Code Playgroud)