c++ - 放置类定义和原型(prototype)

标签 c++ class

当我创建一个函数时,如果我将原型(prototype)放在 main 之上,我可以将它的代码放在 main 之后。例如,

int myFunction(int a)
{
return(a); 
}

会有原型(prototype)..

int myFunction(int a);

高于主要。

但是,我无法将它用于类定义。

如果我把...

class myClass
{
…
};

在主体下方,

如果我输入会出错

class myClass;

高于主要。错误发生在类在 main 中使用的地方,错误是“未知的类型名称”。这是 Xcode 的一部分的 c++ 编译器。

如果类定义在main下面,我应该在main上面输入什么样的原型(prototype)?

最佳答案

当您调用函数且定义不可用时,编译器无需知道内容即可继续评估其余代码(例如:调用站点的堆栈使用情况)。它只需要知道函数的签名即可确保将正确的参数传递给函数。编译器完成后,链接器将挂接函数调用的实际地址。

然而,当您使用一个类时,它必须知道它的细节——而不仅仅是它的存在——因为它需要确保堆栈上的正确布局、构造函数需要哪些参数等。

类函数的详细信息当然就像常规函数一样 - 它只需要使用签名 - 它们可以在以后定义。

关于c++ - 放置类定义和原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29285103/

相关文章:

c++ - 如何使用继承在作为类成员的结构中添加新条目

javascript - 在 React 中实现子数据结构

c++ - 如何选择一个总和为目标数字的数字序列(从固定列表中)?

c++ - 将值传递给 C++ 中的指针参数

c++ - 如何从我在 Code::Blocks 中打开的文件或项目中查看函数列表?

c++ - c++ armadillo可以找到2个 vector 的成对最小值吗

java - 我的 WAR 文件夹中没有 Java 类

javascript - 如果选择了 Div - hasClass - 触发一些事件,如果没有选择 - 触发其他事件。这可以作为独立功能来实现吗?

c++ - 类中的 C++ 结构中的 Pragma

C++ 使用 epsilon 比较 double