我应该将我的实现放在一个文件中,将我的原型放在头文件中。但是我理解它的方式,一个充满原型的头文件将不会非常有用。这些是什么东西?其中一个与定义或声明相同吗?
答案 0 :(得分:6)
函数原型是一个声明其参数类型的函数声明。这种区别是历史性的。在C中,可以声明一个没有原型的函数,但在C ++中,所有函数声明都是原型(因此在C ++中没有区别)。
// In C, this is a declaration but NOT a prototype.
// In C, this function takes an unknown number of parameters.
// In C++, this is a prototype, and the function has no arguments.
void f();
// In C, this is a prototype for a function with no arguments.
// In C++, it is the same thing.
void f(void);
在C ++中,除非您拥有该函数的声明/原型,否则无法调用函数。这是头文件的使用。
(在C中,你可以在没有声明的情况下调用函数,但这被认为是一个坏主意,你只能在真正的旧代码中看到它。)
答案 1 :(得分:0)
函数原型是函数的声明:它的名称,参数和返回类型。与完整定义不同,原型以分号结尾。
int myfunc(double param) ;
参数值的实际名称(上例中的param)可以省略原型。这样可以随意重命名变量。
原型在头文件中使用,以便可以调用其他文件中的外部函数,编译器可以在编译期间检查参数。
函数原型可用于转发声明函数。前向声明是指函数或类在其实现之前声明的时间。