C++,为什么结构/类中不需要前向声明

C++, why is forward declaration not required in structs/classes

本文关键字:不需要 声明 为什么 结构 C++      更新时间:2023-10-16

在C++中,为什么编译以下内容:

struct test {
    void foo() { this->bar++; }
    int bar;
};

但不是以下内容:

void foo() { bar++; }
int bar;

需要明确的是,我确实理解,在第二种情况下,foo缺乏bar的前瞻性声明,并且没有汇编。但是,我不明白为什么第一个不会因为同样的原因而失败。

如果是结构,成员变量的作用域在结构中可用。因此,如果您在结构中定义一个函数,则该变量将在函数中可用。

但在第二种情况下,情况并非如此。