Supposons que nous ayons B.h
, main.cpp
y B.cpp
, main.cpp
-> main.obj
y B.cpp
-> B.obj
En raison de separate compilation
Je pense que main.obj
y B.obj
devraient tous deux avoir la définition de class B
. Pourquoi il n'y a pas l'erreur:définition multiple de B
lors de l'établissement des liens ?
B.h
#ifndef B_H
#define B_H
class B {
public:
void fun();
private:
int x = 0;
};
#endif
B.cpp
#include "B.h"
void B::fun() {
}
main.cpp
#include "B.h"
int main() {
}