涉及到派生类的头文件的包含

涉及到派生类的头文件的包含,第1张

先给你说明一下,一般头文件只是用来声明函数或者类,但氏握迅不定义他们,定义他们一般在源文件(cpp)中定义,因此如果只在头文件中声明函数或类的话,就没必要包含其他文件,也就是不需要使用#include语句,一般只有源文件中才会用到#include语句。下面给你介绍一下具体的内容。

把程序写在多个文件中

1、对于大型程序一般将一个程序写在多个文件中:一般把程序分成三部分,头文件和两个源文件,其中头文件包含类的声明或函数的声明。其中一个源文件就包含这些类和函数的定义,而另一个源文件则是主程序。

2、将程序放在多个文件中的好处是比如有多个这样的程序需要在头文件中声明的这些函数,则只需在该程序中把这些头文件包含进来。头文件和包含头文件定义的文件就组成了一个软件包,可用于各种程序中。

3、通常不应将函数声明和变量声明放在头文件中。因为如果头文件包含一个函数定义,然后在同一程序的其他两个文件中包含了这个头文件,则同一程序中将包含同一函数的两个定义,除非是内联函数,否则就将出错。

4、头文件一般包含:函数原型,使用#define或const定义的符号常量,结构声明,类声明,模板声明,内联函数。

5、包含头文件时使用#include关见字,在#include后面文件名最好使用双引号不要使用尖括号,比如#include “eee.h”使用双引号和尖括号的区别是使用尖括号时编译器将首先在标准头文件中查找,而使用双引号则首先在当前工作目录或源代码目录查找。

6、不能在同一个文件中包含头文件两次。一般不会犯这种错误,但是当使用包含了一个头文件的文件时有可能在不知情的情况下犯这个错误。

7、使用预处理器指令#ifndef来解决上面的问题。语名#ifndef hyong…..#endi表示仅当以前没有使用预处理器编译指令#define定义的名称hyong时才处理#ifndef….#endif之间的语句。#define通常创建符号常量,比如#define H 3;把常量3定义为名字H,但只使用#define就能创建名称,比如#define H就创建了一个名称H。完整的#ifndef….#endif语句的例子如下:#ifndef HY #define HY void g()#endif;该语句的执行顺序为:编译器首先遇到该头文件时,名称HY没有被定义,这时编译器就将查看#ifndef….#endif之间的内容,并读取到#define HY这一行。如果在同一文件中遇到包含该头文件的代码时,编译器就知道HY这个名字已经被#define定义了,从而跳过#ifndef….#endif之间的内容。注意这种方法并不能防止头文件被包含两次,而只是让他忽略除第一次包含之外的所有内容。

//将程序放在多个文件中的示例:以下示例有两个头文件hyong.h和hy.h其中hyong.h中只声明了一个函数,而hy.h中定义了一个函数(不推见这样做)。有两个源文件,hyong.cpp中歼此定义了hyong.h中声明的函数,而ff.cpp是主文件。对于类与函数是类似的。

//头文件hyong.h的内容如下

#ifndef HY //一般在头文件都都使用这种格式以防止头文件在同一文件中被包含两次。语名#ifndef hyong…..#endi表示仅当以前没有使用预处理器编译指令#define定义的名称hyong时才处理#ifndef….#endif之间的语句。

#define HY //在这里用define定义一个名字HY,以便在下次访问到该头文件时,使该名字已经被定义,从而让程序跳过#ifndef….#endif间的语句。

void g() //在头文件中声明一个函数g();

#endif

//在头文件hy.h中定义函数,一般不允许这样做

#include <iostream>

using namespace std

void f(){cout<<"f()"<<endl}

//定义头文件中声皮茄明的函数的源文件hyong.cpp的内容如下

#include "stdafx.h" //注意:在VC++中所有的源文件中都要包含这条语句。

#include "hyong.h" //将头文件hyong.h包含进来,这里使用双引号,而不是引号,以便能更快地检查到该头文件中定义的名字

#include “hy.h”//注意这里,在这个源文件中把头文件hy包含进来

#include <iostream>

using namespace std

void g(){cout<<"g()"<<endl} //定义头文件hyong.h中声明的函数g()

//主程序源文件ff.cpp的内容如下

#include "stdafx.h"

#include<iostream>

#include "hyong.h" //注意,主程序和hyong.cpp的文件中都包含了这个头文件。

//#include “hy.h” //错误,在同一程序中的另一个文件hyong.cpp中已包含过该头文件,因为f函数是在hy.h这个头文件中定义的,在这里再包含头文件hy.h就会出现在同一程序中定义了两个f()函数的错误。

using namespace std

int main() {g() cout<<"p"<<endl} //f()//对f函数的调用错误,因为f函数在头文件hy.h中定义,并且不能在主程序文件中再包含头文件hy.h,在这里就会出现f是未标识的标识符的错误。

现汪腔在是有两个.h文件和一个.cpp文件 使用点.cpp文件用到.h头文件中的基类(BASE.h)class_2.h继承了BASE.h文件 在.cpp文件写代码时要包含下这纯樱两个头文件#inlcude "BASE.h"#inlcude "class_2.h"要不当调用class_2.h会找不到被做陵丛继承的父类 【酷_酷_币】为您服务...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8203781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存