编程总结(四)C++中的前置声明

来源:互联网 发布:虚幻4做的游戏好优化吗 编辑:程序博客网 时间:2024/06/03 14:02

编程总结(四)C++中的前置声明

0x01 前置声明应用场景

一般来说,当你某个文件中,需要用到某个类或者结构体的指针,但是却不能直接包含那个类或者结构体的声明文件时,可以用前置声明解决。

重点:前置声明的类或者结构体,只能声明成指针变量,而且不能使用它的成员。因为声明一个指针变量,编译器能知道这个指针变量的类型,还能知道变量的大小(指针大小),所以能创建这个指针变量。但是如果声明成对象,编译器不知道该对象的成员,故不能为这个变量分配空间,从而会有一个使用未定义类型的错误。

0x02 使用方法

1、类的前置声明

class A;class B{public:    A* a = nullptr;    B()    {    }    ~B()    {    }};

前置声明类A,则在声明之后,就能使用类A创建指针变量。

2、结构体的前置声明
某个地方,有如下定义

typedef struct st_C{    //....    //某些成员}C;

另外的文件,对结构体C的前置声明,只能用下面方式

struct st_C;class D{public:    st_C* c = nullptr;    D()    {    }    ~D()    {    }private:};

不能使用struct C;只能使用struct st_C;(具体原因我也不知道…)

0 0