为什么不必在C ++中声明结构方法?

用户名

以下面的代码为例:

#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),在方法被声明之前就已被调用。

NirMH

structC ++中的A实际上是class其内容为定义public,除非通过包含protected:或private:部分另行指定。

当编译器看到aclass或时struct,它将首先对块({})中的所有声明进行摘要,然后再对其进行操作。

在常规方法的情况下,编译器尚未看到声明的类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中声明结构

来自分类Dev

为什么在C语言代码中不必要的%转换会产生奇怪的值?

来自分类Dev

C 中的外部结构声明

来自分类Dev

为什么必须在C ++类定义中声明方法?

来自分类Dev

为什么有时不必在Java中声明“新”对象?

来自分类Dev

为什么有时不必在Java中声明“新”对象?

来自分类Dev

为什么不能在C ++ 11或更高版本的函数声明中定义结构?

来自分类Dev

当嵌套在C的结构中时,为什么需要声明联合类型的变量?

来自分类Dev

为什么我不能在C中检查结构的大小?(未声明的错误)

来自分类Dev

IActionFilter-为什么不必实施所有方法?

来自分类Dev

为什么我不必在配置中让监听器呆滞?

来自分类Dev

为什么不只在标头中声明结构?这是否会使包含防卫措施变得不必要?

来自分类Dev

为什么在gcc 9.1中以不必要的功能复制了不必要的MOVAPD副本

来自分类Dev

在C中声明结构而不定义它

来自分类Dev

在标头C ++中声明结构

来自分类Dev

C ++结构中的位字段声明

来自分类Dev

如何在C中声明结构?

来自分类Dev

C 结构体中的未声明函数

来自分类Dev

在 C 中声明循环/IF 结构之外的变量

来自分类Dev

在Rust中声明可以传递给期望指针的C代码的结构或只是变量的正确方法是什么?

来自分类Dev

为什么在 C 中未声明 nullptr?

来自分类Dev

为什么在头文件的函数声明中,对于按值传递的参数而言,const是不必要的?

来自分类Dev

为什么变量在匿名方法中必须是final,而类字段则不必

来自分类Dev

为什么可以定义自己之前声明类类型(在Java中)或结构式(C语言)?

来自分类Dev

为什么我不必在布尔if语句中声明一个值?

来自分类Dev

为什么我不必在类内部转发声明的函数或变量?

来自分类Dev

在C中定义的数组在哪里,为什么当我将其作为函数参数传递时不必重新定义它?

来自分类Dev

为什么在Collection中声明的方法在List Interface中也重复?

来自分类Dev

填充在 .h 中声明的结构数组,在 .c 中的函数内部

Related 相关文章

  1. 1

    在C中声明结构

  2. 2

    为什么在C语言代码中不必要的%转换会产生奇怪的值?

  3. 3

    C 中的外部结构声明

  4. 4

    为什么必须在C ++类定义中声明方法?

  5. 5

    为什么有时不必在Java中声明“新”对象?

  6. 6

    为什么有时不必在Java中声明“新”对象?

  7. 7

    为什么不能在C ++ 11或更高版本的函数声明中定义结构?

  8. 8

    当嵌套在C的结构中时,为什么需要声明联合类型的变量?

  9. 9

    为什么我不能在C中检查结构的大小?(未声明的错误)

  10. 10

    IActionFilter-为什么不必实施所有方法?

  11. 11

    为什么我不必在配置中让监听器呆滞?

  12. 12

    为什么不只在标头中声明结构?这是否会使包含防卫措施变得不必要?

  13. 13

    为什么在gcc 9.1中以不必要的功能复制了不必要的MOVAPD副本

  14. 14

    在C中声明结构而不定义它

  15. 15

    在标头C ++中声明结构

  16. 16

    C ++结构中的位字段声明

  17. 17

    如何在C中声明结构?

  18. 18

    C 结构体中的未声明函数

  19. 19

    在 C 中声明循环/IF 结构之外的变量

  20. 20

    在Rust中声明可以传递给期望指针的C代码的结构或只是变量的正确方法是什么?

  21. 21

    为什么在 C 中未声明 nullptr?

  22. 22

    为什么在头文件的函数声明中,对于按值传递的参数而言,const是不必要的?

  23. 23

    为什么变量在匿名方法中必须是final,而类字段则不必

  24. 24

    为什么可以定义自己之前声明类类型(在Java中)或结构式(C语言)?

  25. 25

    为什么我不必在布尔if语句中声明一个值?

  26. 26

    为什么我不必在类内部转发声明的函数或变量?

  27. 27

    在C中定义的数组在哪里,为什么当我将其作为函数参数传递时不必重新定义它?

  28. 28

    为什么在Collection中声明的方法在List Interface中也重复?

  29. 29

    填充在 .h 中声明的结构数组,在 .c 中的函数内部

热门标签

归档