欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

前向声明

发布时间:2023/11/30 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 前向声明 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前向声明的定义:有些时候我们可以声明一些类但是并不去定义它,当然这个类的作用也很有限了。

如:class A;

声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),

也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪些成员,具有哪些操作)都不知道。

因此这个类的作用也很有限.

(1)不能定义foo类的对象。(不能)

(2)可以用于定义指向这个类型的指针或引用。(很有价值的东西)(能) ----- 因为所有类型的引用和指针都是4字节,嘻嘻。

(3)用于声明(不是定义)使用该类型作为形参或者返回类型的函数。(能)

如:

class string;

class Sample

{

private:

string &s;

};

这里只需要做一个string的前向声明就可以了,不需要#include <string>

这里,我根本没有定义一个foo类,但是还是可以这样用,因为成员函数不占类对象的大小,所以c++编译器还是可以确定对象的大小。

前向声明的作用在于告诉编译器这个是一个在别的地方定义的类型。这样C++编译器就能生成正确的符号表了。编译器只知道这是一个类?一个结构体?

但是在类实现文件还是要 include 声明这个类的头文件的

转载于:https://www.cnblogs.com/yiii/p/5605098.html

总结

以上是生活随笔为你收集整理的前向声明的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。