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

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

我正在寻找允许在另一个类的头文件中进行类的前向声明的定义:

我是否允许为基类,作为成员持有的类,通过引用传递给成员函数的类等执行此操作?


慕娘9325324
浏览 671回答 3
3回答

莫回无

主要规则是您只能转发声明其内存布局(以及成员函数和数据成员)不需要在您转发声明它的文件中知道的类。这将排除基类和除引用和指针使用的类之外的任何东西。

慕码人2483693

Lakos区分了课堂使用仅限名称(前向声明就足够了)和in-size(需要类定义)。我从来没有见过它更简洁明了:)

慕田峪9158850

除了指向不完整类型的指针和引用之外,您还可以声明指定参数和/或返回不完整类型值的函数原型。但是,除非是指针或引用,否则无法定义具有不完整的参数或返回类型的函数。例子:struct X;              // Forward declaration of Xvoid f1(X* px) {}      // Legal: can always use a pointervoid f2(X&  x) {}      // Legal: can always use a referenceX f3(int);             // Legal: return value in function prototypevoid f4(X);            // Legal: parameter in function prototypevoid f5(X) {}          // ILLEGAL: *definitions* require complete types
打开App,查看更多内容
随时随地看视频慕课网APP