多文件结构

        当学习完C++的基本语法,想要上手一个大型项目时,必须了解大型项目的文件组织结构。

        首先要有脑海里一定要一个概念:一个C++源程序基本上是由3个部分组成:类的定义类的实现主函数,与之相对应的,一个大型C++程序通常至少划分为3个文件:类定义文件(*.h)、类实现文件(*.cpp)、类的使用文件(*.cpp,该文件一般包含主函数)。

        平时练习的例子比较小,故常常为了方便而将3个部分写在一个同一个文件中。当程序规模较大时,可能要多个源程序文件(也可称为编译单元),而且类也比较多, 而C++规定如果一个编译单元要使用某个类,则必须把类的定义写入源程序中,故当一个类比较复杂或要包含多个类时,工作量和管理问题便出现了,比如当要修改一个类时,如果有100个源文件使用该类,则需要进入每个使用该类的源文件进行修改(Ctrl+c和Ctrl+v要用100次)。

        而解决这个问题的方法就是把类的定义写在头文件中,使用该类的源程序要包含该头文件,有时候每个类都要单独写个头文件。把每个文件单独编写、编译、最后在链接,这样当要修改一个类时,只用修改该类的头文件和实现文件即可。

        下面举个例子,多文件组织的Car类

       文件1:类的定义"Car.h"

class Car {
public:
    Car(int x, int y);    //构造函数
    Car (const Car &p);    //复制构造函数
    ~Car() { count--; }
    int getX() const { return x; }
    int getY() const { return y; }
   
    static void showCount();    //静态函数成员
private:
    int x, y;
    static int count;    //静态数据成员 
};

       文件2:类的实现“Car.cpp”

#include "Car.h"
#include <iostream>
using namespace std;

int Car::count = 0;    //用类名初始化静态数据变量

Car::Car(const Car &p) :x(p.x), y(p.y) {
    count++;
}

Car::Car(int x, int y) : x(x), y(y) {
    count++;
}

void Car::showCount() {
    cout << " Object count=" << count << endl;
}

       文件3:主函数“main.cpp”

#include "Car.h"
#include <iostream>
using namespace std;

int main() {
    Car a(4, 5);
    cout << "Car A:" << a.getX() << "," << a.getY();
    Car::showCount();

    Car b(a);
    cout << "Car B:" << b.getX() << "," << b.getX();
    Car::showCount();

    return 0;
}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路转溪桥忽见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值