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

编程总结(四)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;(具体原因我也不知道…)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值