为了账号安全,请及时绑定邮箱和手机立即绑定

我什么时候可以使用前瞻性声明?

我什么时候可以使用前瞻性声明?

慕娘9325324 2019-05-23 10:59:24
我什么时候可以使用前瞻性声明?我正在寻找允许在另一个类的头文件中进行类的前向声明的定义:我是否允许为基类,作为成员持有的类,通过引用传递给成员函数的类等执行此操作?
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

主要规则是您只能转发声明其内存布局(以及成员函数和数据成员)不需要在您转发声明它的文件中知道的类。

这将排除基类和除引用和指针使用的类之外的任何东西。


查看完整回答
反对 回复 2019-05-23
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

Lakos区分了课堂使用

  1. 仅限名称(前向声明就足够了)和

  2. in-size(需要类定义)。

我从来没有见过它更简洁明了:)


查看完整回答
反对 回复 2019-05-23
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

除了指向不完整类型的指针和引用之外,您还可以声明指定参数和/或返回不完整类型值的函数原型。但是,除非是指针或引用,否则无法定义具有不完整的参数或返回类型的函数。


例子:


struct X;              // Forward declaration of X


void f1(X* px) {}      // Legal: can always use a pointer

void f2(X&  x) {}      // Legal: can always use a reference

X f3(int);             // Legal: return value in function prototype

void f4(X);            // Legal: parameter in function prototype

void f5(X) {}          // ILLEGAL: *definitions* require complete types

https://img1.sycdn.imooc.com//5ce60d5f0001aa0105220120.jpg

查看完整回答
反对 回复 2019-05-23
  • 3 回答
  • 0 关注
  • 670 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信