最近「inline」という仕組みを知り色々と調べているのですが、ロベールのC++教室Qoosky等の記事では「inline関数の実装はヘッダに記述する」と記述があります(ロベールではクラスの宣言と記述はありますが)。

ここで一つ確認なのですが、これは

コンパイル時に処理を埋め込む際に埋め込む内容が明らかである必要であり、故にヘッダーに実装内容が記述されているべきである。

という解釈でよろしいのでしょうか。

また、以前inlineを試しに使ってみようとしたところ、誤っていつも通りcpp側に実装を記述してしまいましたが一応問題なく動いていました。

しかしこれはコンパイル時に

  1. 全.h読み込み...
  2. コンパイラ「おい! inline関数の中身がねぇぞ!」
  3. 全.cpp読み込み...
  4. コンパイラ「ここにあるじゃねえか!」
  5. 再度.cpp読み込んでinline関数呼び出し側に埋め込み...

という(私の勝手なイメージの)流れによりcppを読み込むオーバーヘッドが生まれている為無駄であるという事になるのでしょうか。

よろしくお願いいたします。