我刚开始学习C ++,所以你不得不忍受我的无知。有没有办法声明函数,以便可以在不使用它们的函数之前编写它们。我正在使用一个cpp文件(不是我的决定)而且我的函数调用自己,因此没有真正的顺序将它们放入。在使用它们之前#define函数的任何方式或者那种效果? 或者也许是一种用范围运算符标记它们的方法,这种运算符并不意味着它们实际上属于类的一部分?
提前致谢
答案 0 :(得分:9)
您可以在实施之前编写原型功能。函数原型命名函数,返回类型及其参数的类型。唯一需要在函数调用之上的是原型。这是一个例子:
// prototype
int your_function(int an_argument);
// ...
// here you can write functions that call your_function()
// ...
// implementation of your_function()
int your_function(int an_argument) {
return an_argument + 1;
}
答案 1 :(得分:4)
我认为您所指的是函数原型。
您可以在头文件中定义函数的原型,但在源(.cpp)文件中定义实现。
需要引用该函数的源代码只包含头文件,它为编译器提供了足够的信息,以便将函数调用与参数相关联,并返回您正在调用的函数的返回值。
只有在链接阶段才能对源文件解析函数“symbol” - 如果此时不存在函数 implementation ,则会得到一个未解析的符号。
以下是一个例子:
库头文件 - library.h
// This defines a prototype (or signature) of the function
void libFunction(int a);
库源(.cpp)文件 - library.cpp
// This defines the implementation (or internals) of the function
void libFunction(int a)
{
// Function does something here...
}
客户端代码
#include "library.h"
void applicationFunction()
{
// This function call gets resolved against the symbol at the linking stage
libFunction();
}
答案 2 :(得分:4)
您需要的是一个函数声明(又名 prototype )。声明是函数的返回类型,名称和参数列表,没有正文。这些通常在头文件中,但它们不一定是。这是一个例子:
#include< stdio >
using namespace std;
void bar( int x ); // declaration
void foo( int x ); // declaration
int main() {
foo( 42 ); // use after declaration and before definition
return 0;
}
void foo( int x ) { // definition
bar( x ); // use after declaration and before definition
}
void bar( int x ) { // definition
cout << x;
}
答案 3 :(得分:2)
是。将函数的签名放在文件的顶部,或放在标题(.h)文件中。
所以:
void OtherFunc(int a);
void SomeFunc()
{
OtherFunc(123);
}
void OtherFunc(int a)
{
...
}
答案 4 :(得分:2)
类成员函数在标头中声明,该标头定义了类的接口。此头文件应包含在包含实现的CPP文件的顶部或附近。因此,在CPP文件中定义成员函数的顺序无关紧要,因为所有声明都已包含在内。
从你的问题来看,我会想你正在考虑编写免费功能。您可以使用相同的技术来声明自由函数;但是,我提醒过多的免费功能。