概述
在我们平时写一些小程序时,正常都是用的单文件,就是只有一个cpp的文件,但是当我们需要写一些比较大型的项目时,这样的单文件已经不能满足我们的需求了,这是因为,当写一个项目是,代码量都是巨大的,如果只用一个单独的文件来存放这些代码,可想而知,这个文件的篇幅会非常巨大,这也不利于我们对项目进行维护,当我们要调试时工作量会非常大,会非常麻烦。如果是换做多文件,那就大大不一样,我们可以根据代码实现的功能,将其划分成不同的模块,用不同的函数来表示出来,放在不同的文件里,这样的话,代码看上去就很清晰、明了,而已,这也有利于我们对这份代码的维护,我们可以根据不同的功能模块来排查问题。这里强调一点:多文件是指可以有多个.h,多个.cpp的文件,但是,main()函数只能有一个。
下面就具体介绍一下,如何来实现多文件编程吧:
一、最简单的多文件实例:
1.首先,我们需要建立一个工程,如图:
2.建立main.cpp也就是包含main()函数的文件,
3.建立头文件(.h文件),注意,头文件里只放函数的声明,根据模块化的定义,我们吧函数的声明和定义分开放,将函数的声明放在头文件里,将函数的定义放在.cpp文件里,这样的话,调理更加地清晰,
4.建立其他的.cpp文件,必要的话要包含一些头文件;
5.最后就可以组建,运行了,运行结果如图:
总结:这里是举的一个最简单的多文件编程的例子,主要要注意的就是,将函数的声明放在头文件,函数的定义放在.cpp文件里。
二、稍微复杂一点的多文件实例:
这里要注意的一些问题就是:在本文件中,访问其他文件的一些变量或是函数时,要以这样的格式:extern+变量/函数声明;如果要是本文件中的全局变量或是函数不能被其他文件访问,则需要在这些全局变量/函数的声明前加上static,具体的使用方法,大家可以看一下下面的例子:
各个文件源码见下:
fun.h
int fa = 10;//全局变量,可以被外部引用
static int fb = 10;//全局变量,私有,不可被外部引用
void fun1();
void fun2();
person.h
class Person
{
private:
char *sex, *name;
int age;
public:
Person();
~Person();
void setSex(char p[]);
void setName(char q[]);
void setAge(int a);
void output();
};
main.h
#include <iostream>
using namespace std;
extern int fa;
extern void fun1();
extern void fun2();
extern class Person
{
private:
char *sex, *name;
int age;
public:
Person();
~Person();
void setSex(char p[]);
void setName(char q[]);
void setAge(int a);
void output();
};
fun.cpp
#include <iostream>
#include "fun.h"
using namespace std;
void fun1()
{
cout << "fun1 " << fa << endl;
}
void fun2()
{
cout << "fun2 " << fa << endl;
}
person.cpp
#include <iostream>
#include <cstring>
#include "person.h"
using namespace std;
extern int fa;
//extern int fb;
Person::Person() {}
Person::~Person()
{
delete []sex;
delete []name;
}
void Person::setAge(int a)
{
age = a;
}
void Person::setSex(char p[])
{
sex = new char[strlen(p)+1];
strcpy(sex, p);
}
void Person::setName(char q[])
{
name = new char[strlen(q)+1];
strcpy(name, q);
}
void Person::output()
{
cout << "sex:" << sex << " name:" << name << " age:" << age << endl;
fa = 20;
cout << "fa = " << fa << endl;
//cout << "fb = " << fb << endl;
}
main.cpp
#include "main.h"
int main()
{
int age;
char strSex[10], strName[10];
Person person;
cin >> strSex >> strName >> age;
person.setAge(age);
person.setName(strName);
person.setSex(strSex);
fun1();
fun2();
person.output();
fun1();
fun2();
return 0;
}
此图引用自http://www.weixueyuan.net/view/5834.html
最后
以上就是满意芹菜为你收集整理的多文件编程初步的全部内容,希望文章能够帮你解决多文件编程初步所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复