以下面的代码为例:
#include <iostream>
#include <string>
int main()
{
print("Hello!");
}
void print(std::string s) {
std::cout << s << std::endl;
}
当尝试构建它时,我得到以下信息:
program.cpp: In function ‘int main()’:
program.cpp:6:16: error: ‘print’ was not declared in this scope
有道理。
那么,为什么我可以在结构中进行类似的概念却又不为此大喊大叫呢?
struct Snake {
...
Snake() {
...
addBlock(Block(...));
}
void addBlock(Block block) {
...
}
void update() {
...
}
} snake1;
我不仅没有得到警告,而且程序实际上也在编译!没有错误!这仅仅是结构的本质吗?这里发生了什么事?显然addBlock(Block)
,在方法被声明之前就已被调用。
struct
C ++中的A实际上是class
其内容为的定义public
,除非通过包含protected:或private:部分另行指定。
当编译器看到aclass
或时struct
,它将首先对块({}
)中的所有声明进行摘要,然后再对其进行操作。
在常规方法的情况下,编译器尚未看到声明的类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句