为了账号安全,请及时绑定邮箱和手机立即绑定

定义和声明之间有什么区别?

定义和声明之间有什么区别?

翻阅古今 2019-05-22 15:32:46
定义和声明之间有什么区别?定义和声明之间有什么区别?定义和声明之间有什么区别?
查看完整描述

5 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

C ++中有一些有趣的边缘情况(其中一些也在C中)。考虑


T t;

这可以是定义或声明,具体取决于类型T:


typedef void T();

T t; // declaration of function "t"


struct X { 

  T t; // declaration of function "t".

};


typedef int T;

T t; // definition of object "t".

在C ++中,使用模板时,还有另一种边缘情况。


template <typename T>

struct X { 

  static int member; // declaration

};


template<typename T>

int X<T>::member; // definition


template<>

int X<bool>::member; // declaration!

最后一个声明不是定义。它是静态成员的明确特化的声明X<bool>。它告诉编译器:“如果要实例化X<bool>::member,那么不要从主模板中实例化成员的定义,而是使用在别处找到的定义”。要使其成为定义,您必须提供初始化程序


template<>

int X<bool>::member = 1; // definition, belongs into a .cpp file.


查看完整回答
反对 回复 2019-05-22
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

宣言

声明告诉编译器存在程序元素或名称。声明将一个或多个名称引入程序。声明可以在程序中多次出现。因此,可以为每个编译单元声明类,结构,枚举类型和其他用户定义的类型。

定义

定义指定名称描述的代码或数据。必须先声明名称才能使用它。


查看完整回答
反对 回复 2019-05-22
  • 5 回答
  • 0 关注
  • 858 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信