您好、欢迎来到现金彩票网!
当前位置:九乐棋牌 > 文件定义 >

在下列声明和定义中 哪些应被放到头文件中

发布时间:2019-07-07 13:26 来源:未知 编辑:admin

  附加问题:一般哪些声明跟定义应被放到头文件中 哪些应被放到程序文本文件中?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  推荐于2016-03-31展开全部当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次。下列语句是一些定义,所以不应该放在头文件里:

  虽然ival声明为extern,但是它有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字extern。同一个程序中有两个以上文件含有上述任一个定义都会导致多重定义链接错误。

  对于头文件不应该含有定义这一规则,有三个例外。头文件可以定义类、值在编译时就已知道的const对象和inline函数。这些实体可在多个源文件中定义,只要每个源文件中的定义是相同的。

  在头文件中定义这些实体,是因为编译器需要它们的定义(不只是声明)来产生代码。例如:为了产生能定义或使用类的对象的代码,编译器需要知道组成该类型的数据成员。同样还需要知道能够在这些对象上执行的操作。类定义提供所需要的信息。在头文件中定义const对象则需要更多的解释。

  回想一下,const变量默认为定义该变量的文件的局部变量。正如我们现在所看到的,这种默认的原因在于允许const变量定义在头文件中。

  在C++中,有些地方需要放置常量表达式。例如,枚举成员的初始化式必须是常量表达式。在以后的章节中将会看到其他需要常量表达式的例子。

  一般来说,常量表达式是编译器在编译时就能够计算出结果的表达式。当const整型变量通过常量表达式自我初始化时,这个const整型变量就可能是常量表达式。而const变量要成为常量表达式,初始化式必须为编译器可见。为了能够让多个文件使用相同的常量值,const变量和它的初始化式必须是每个文件都可见的。而要使初始化式可见,一般都把这样的const变量定义在头文件中。那样的话,无论该const变量何时使用,编译器都能够看见其初始化式。

  但是,C++中的任何变量都只能定义一次。定义会分配存储空间,而所有对该变量的使用都关联到同一存储空间。因为const对象默认为定义它的文件的局部变量,所以把它们的定义放在头文件中是合法的。

  这种行为有一个很重要的含义:当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。

  当该const变量是用常量表达式初始化时,可以保证所有的变量都有相同的值。但是在实践中,大部分的编译器在编译时都会用相应的常量表达式替换这些const变量的任何使用。所以,在实践中不会有任何存储空间用于存储用常量表达式初始化的const变量。

  如果const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量一样,该const变量应该在一个源文件中定义并初始化。应在头文件中为它添加extern声明,以使其能被多个文件共享。

  展开全部其实分情况的。以上你列出的那些声明和定义都可以放在头文件和程序文件中,只不过要视情况而定了,如果你的头文件是一个定义功能的头文件,那么肯定少不了常量定义、变量定义、函数声明等一系列的声明以及定义。根据面向对象的概念,为了形成一个封装体,这些声明和变量在定义这个封装体的时候都要用到的。然后这个封装体就成为我们将来声明的头文件了。

  但是如果你的程序比较简单,或者没有过多的类的话,那么上面的声明和定义一般情况下都是在程序体部分出现的。

http://isleofmanguide.com/wenjiandingyi/403.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有