首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cpp中放什么和文件是什么?

在cpp中放什么和文件是什么?
EN

Stack Overflow用户
提问于 2012-09-20 12:30:53
回答 3查看 539关注 0票数 0

可能重复: In C++ why have header files and cpp files? C++ - What should go into an .h file?

通常在.cpp文件中定义的所有函数/方法都可以在.h文件中内联定义。那么,使用.cpp的原因是什么呢?有效?编译时间?

是否有一些标准可以保留在.h中,哪些应该进入.cpp?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-09-20 12:36:01

相关内容

This questionthat

基本上,编译器能够编译所有文件,而不管您将所有代码放入.h或.cpp文件中。他们之间的分离有着根本的好处

  1. 简而言之,为了便于可见性和可重用性,您希望将接口与实现分离开来。
  2. 它减少了编译时间。
  3. 当您使用一个3 3dparty库的头文件时,您实际上并不关心它的实现,而是关心要调用的函数签名。
  4. 当您将自己的库作为util库提供时,您只想提供给人们使用的头文件,而为希望开发您的库的人提供的源库--这个列表可以更进一步,但这就是我现在想到的。
票数 3
EN

Stack Overflow用户

发布于 2012-09-20 12:35:49

  • 减少编译时间。如果定义都在头文件中,那么每次该头文件更改时,都需要对包含该头文件的所有文件进行编译。
  • 隐藏接口以避免实现。允许发送标头和库。
票数 2
EN

Stack Overflow用户

发布于 2012-09-20 12:37:14

你不能把所有的东西都插进去。对象可以定义一次,而且只能定义一次。只有类和模板可以多次定义,内联只允许重新定义函数。

例如,考虑header.hpp:

代码语言:javascript
复制
extern int a;

struct Foo { static int b; };

下列各项必须并入一个专门的单一翻译单位:

代码语言:javascript
复制
#include "header.hpp"

int a;
int Foo::b;

另一方面,类模板的静态成员可以而且必须保留在标题中:

代码语言:javascript
复制
template <typename T> struct Foo { static int x; };
template <typename T> int Foo<T>::x;

链接器必须弄清楚如何将对象惟一化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12512598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档