前向声明

可以声明一个类而不定义它
   class Screen;//declaration of the Screen class
   这个声明,有时候被称为前向声明(forward declaration),在程序中引入了类类型的Screen.在声明之后,定义之前,类Screen是一个不完全类型(incompete type),即已知Screen是一个类型,但不知道包含哪些成员.
   不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: typedef前向声明是在定义一个指向某种类型的指针时,使用typedef给这种类型起一个别名,同时又因为这种类型尚未完全定义,所以需要在面加上struct、enum等关键字进行前向声明,以告诉编译器这个别名所代表的类型是存在的,但具体细节还不清楚。 例如,我们可以这样定义一个结构体: ``` struct Person { char name[20]; int age; }; ``` 使用typedef前向声明可以将这个结构体起一个别名: ``` typedef struct Person* PersonPtr; ``` 这样,我们就可以使用PersonPtr作为指向Person结构体的指针类型了。注意,在这里我们使用了struct关键字进行前向声明。 ### 回答2: typedef前向声明是指在使用typedef关键字定义类型别名时,如果所别名的类型尚未定义,可以使用前向声明来引入该类型,以便在后续代码中正确使用该别名。 例如,我们想要定义一个指向结构体的指针类型别名PersonPtr,但是结构体Person的定义在后面的代码中。这时,我们可以使用typedef前向声明来引入Person,以便在声明别名PersonPtr时正确使用它。 typedef struct Person Person; // 前向声明 typedef struct Person* PersonPtr; // 使用前向声明的结构体指针别名 在这个例子中,我们通过typedef struct Person Person; 前向声明了结构体Person,使得在后面的代码中可以正确引用它,并且通过typedef struct Person* PersonPtr; 定义了结构体Person的指针类型别名PersonPtr。 typedef前向声明的使用可以消除类型定义的先后顺序限制,提高代码的可读性和可维护性。同时也使得在引入新的类型定义时,不需要修改已有代码中的类型别名,从而减少了代码的改动量和维护成本。 需要注意的是,typedef前向声明只能用于定义类型别名,不能用于定义变量、函数或其它类型的实体。在使用typedef前向声明时,还需要保证在实际使用该别名之,引入了相应的完整类型定义,以免出现编译错误。 ### 回答3: typedef前向声明是一种在C语言中用于定义新的数据类型的方式。它的主要作用是在声明一个新的类型时,可以在还没有定义具体类型的情况下先进行声明。通过typedef前向声明,可以定义一个别名来代替某个类型,从而方便后续使用。 当我们在编程序时,经常会遇到需要定义一些复杂的数据类型的情况。例如,我们可能需要定义一个结构体或者一个复杂的指针类型。在这些情况下,如果没有typedef前向声明,我们需要先完整地定义这些类型,然后再使用。这样就会导致我们在使用这些类型时,需要频繁地很长的类型名,代码的可读性和可维护性都会变差。 而有了typedef前向声明以后,我们可以先声明一个新的类型,然后再在后续的代码中使用这个类型的别名。这样一来,即使我们还没有具体地定义这个类型,我们仍然可以在代码中使用它的别名。这样的话,我们既可以减少代码的冗余,也能提高代码的可读性。 总之,typedef前向声明是一种方便的方式,可以在还没有具体定义一个新类型的情况下,先进行声明,并定义一个别名来代替这个类型。它有助于简化代码,提高代码的可读性和可维护性,是C语言中常用的技巧之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值