多文件程序

最近接触了C++里的多文件编译,怕自己遗忘,更是把自己的学习经历分享出来,希望可以帮助到大家。

首先,我们先明确为什么需要多文件编译,下面是一个非常简单的程序

#include<iostream>

int main()
{
    using namespace std;
    cout <<"hello,world";
    
    return 0;
}

但平心而论,这并不是一个简单的程序

因为cout的逻辑全部都藏在iostream里,而客户端程序(即上文的程序)仅仅只是调用,并不需要关心cout的具体逻辑,这十分的像客户端和服务端之间的关系,客户端只需要关心接口的使用(即cout),而服务端只需维护接口和实现的具体逻辑,不需关心使用,如此以来,维护工作便可以大大精简。

那如何实现呢?

首先,我们需要创建3个文件,分别将其命名为XXX.h,XXX.cpp(放具体逻辑实现),XXX.cpp(放具体使用)

如下示例

 

stock00.h

#ifndef STOCK00_H_
#define STOCK00_H_

#include<string> 

class Stock
{
private:
	std::string company;
	long shares;
	double share_val;
	double total_val;
	void set_tot(){total_val = shares * share_val;}

public:
	void acquire(const std::string&co,long n ,double pr);
	void buy(long sum,double price);
	void sell(long sum,double price);
	void update(double price);
	void show(); 
};

#include"stock00.cpp"
 
#endif
stock00.cpp
#include <iostream>
#include "stock00.h"

void Stock::acquire(const std::string & co,long n,double pr)
{
	company = co;
	if (n<0)
	{
		std::cout<<company;
		
		shares = 0;
		 
	}
	else 
		shares = n;
	share_val = pr;
	set_tot();
}

use.cpp

#include"stock00.h"

int main(){

Stock abc;
abc.acquire("NanoSmart",20,12.50);

return 0;
}

首先,在stock00.h中声明函数,这里声明一个Stock的类

其次,我们把具体逻辑放在了stock00.cpp中,这样的目的同样是方便维护,这里省略了其他函数的实现,落到实地,是需要自己添加函数的实现的。

然后,我们在use.cpp中声明了一个Stock类 abc ,然后使用了abc中的acquire。

有细心的读者可能会发现stock00.h下有一个 #include"stock00.cpp"

那么就不得不谈到什么是include

include其实是一个C的宏命令,它会把目标文件原封不动“搬到”当前文件,所以这也就是为什么include 和其他 include可能会有冲突,因为假设一个目标文件中存在一个函数声明,而把目标文件include 两遍就意味着会把一个函数声明两遍

同时,这也很好解释了为什么include一般会放在文件开头,毕竟函数得先声明才能使用嘛

那这里为什么把include放在最后呢?这也很好理解,毕竟函数得先声明才能定义嘛

那最后我们只需要编译use.cpp就完成这个简单的多文件程序了

感谢观看!如有不足,希望路过大佬批评指正。

学业繁忙,下一期会出类的继承,平时也会介绍一下算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值