Are member functions defined in a class definition compiled differently than member functions defined elsewhere in C++? For example, consider the following foo.h
#pragma once struct foo { void bar() {} void buz(); }; and foo.cpp
#include "foo.h" void foo::buz() {}; If we look at the symbols for foo.o
$ g++ -c foo.cpp $ nm -a foo.o 0000000000000000 b .bss 0000000000000000 n .comment 0000000000000000 d .data 0000000000000000 r .eh_frame 0000000000000000 a foo.cpp 0000000000000000 n .note.GNU-stack 0000000000000000 t .text 0000000000000000 T _ZN3foo3buzEv $ c++filt _ZN3foo3buzEv foo::buz() we see that we only have a symbol for foo::buz. Now, say that we compile multiple files that all include foo.h and then create a library from the result. Are the member functions bar and buz treated differently?