C++,为什么结构/类中不需要前向声明
C++, why is forward declaration not required in structs/classes
在C++中,为什么编译以下内容:
struct test {
void foo() { this->bar++; }
int bar;
};
但不是以下内容:
void foo() { bar++; }
int bar;
需要明确的是,我确实理解,在第二种情况下,foo
缺乏bar
的前瞻性声明,并且没有汇编。但是,我不明白为什么第一个不会因为同样的原因而失败。
如果是结构,成员变量的作用域在结构中可用。因此,如果您在结构中定义一个函数,则该变量将在函数中可用。
但在第二种情况下,情况并非如此。
相关文章:
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 为什么转换函数声明不需要至少一个定义类型说明符
- 根据需要声明资源,而不重复它们
- 如果在C++中不需要构造函数或析构函数,是否有必要显式声明它?
- C++不正确,不需要重新声明类成员变量 MFC 手工解决方案/项目 MS VS 2015
- 为什么 c++ lambda 捕获不需要类型声明?
- C++,为什么结构/类中不需要前向声明
- C++中的函数声明后不需要分号(';')吗?
- 下面链接中的声明不需要存储类说明符"static"。我说的对吗?
- 为什么C++需要通过标头或语句进行前向声明,而 Java 不需要?
- 为什么我需要声明指针而不是对象
- 朋友类概念不需要声明
- 模板类和处理不需要的类型声明的良好实践
- 为什么在通过模板的静态调度中不需要前向声明
- 创建多个对象而不需要多个声明
- 使用函子的返回类型来声明模板方法的返回类型,不需要decltype
- C++ getline() 不需要命名空间声明
- c++调用约定是否受标准约束,因为在声明fn时不需要定义函数的返回类型
- 为什么C++不需要班级成员的前向声明?
- 语法错误:需要声明.为什么gsoap不能读取vector