c++ - 为什么头文件里只申明不实现

本文探讨了C++编程中为何通常不将函数实现置于头文件,主要考虑因素包括隐藏技术细节、避免编译错误及链接问题。当头文件包含实现时,可能导致重复定义错误。解决方案包括使用inline函数(适用于小型函数)或使用static修饰函数,但这些方法可能带来部署问题,因为头文件中的任何改动将影响所有依赖它的库和动态链接库。
摘要由CSDN通过智能技术生成

C++为什么不能把函数实现放在头文件里?

以前一直觉得这样写不符合规范,因为头文件可能会expose给client,但是实现不应该expose给client;这是一个隐藏技术细节(或者机密)的问题。



最近偷懒,把实现放在头文件里,发现还有一个c++编译的原因。

 

Hi.h

#pragm once

 

Void Hi()

{Printf(“hello”);}

a.cpp

#include “Hi.h”

 

Void A() {Hi();}

b.cpp

#include “Hi.h”

 

Void B() {Hi();}

work.cpp

//…

Main()

{

   A();

   B();

}

 

这里Hi的实现放在了.h文件,compile的时候会出现 duplicate实现的error。

根源是什么呢?编译的时候,a.cpp,b.cpp和work.cpp分别被compile成不同的object文件,然后做linkÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值