在c ++中混淆了类声明和实现的位置

Pip*_*eek 2 c++ class

我无法找到具体的答案 - 我知道.h文件包含类声明和.cpp文件保存实现.

我很困惑如何在不重复的情况下完成这项工作.

如果我有一个类Animal,可能会在程序的几个区域中调用它.所以我似乎不得不多次重写这个实现(这无疑意味着我被误解了).

在每次使用给定类时都包含.h声明和.cpp实现似乎有点傻(证据我也误解了一些东西).

在分离声明和实施的主题中我哪里出错了?

我一直都在做PHP和Python,所以这可能是让我困惑的先前习惯.

Que*_*tin 5

.cpp文件一次编译成object(.o)文件.
它们永远不会包含在其他.cpp文件中(这将导致多个定义,这在一般情况下是错误的).

通常#include由头文件检索的声明是一个.cpp文件如何知道在某个其他.cpp文件中定义的内容并在没有实际定义的情况下使用它的方式.

将所有.cpp文件编译成目标文件后,链接器会将所有目标文件链接在一起,形成最终的可执行文件或库.
如果找到同一事物的多个定义,或者如果缺少一个定义,那就是链接器错误.