クラスの定義について質問です。(C++等)

---Class.h---
class クラス{
□void 関数();
};

---Class.cpp---
void クラス::関数(){
□処理;
}

のように、1つのクラスを2つのファイルに分けて定義している方が多いのですが、
これは何故でしょうか?

---Class.h---
class クラス{
□void 関数(){
□□処理;
□}
};

のように、1つのファイルにまとめることもできますよね?
敢えてそうせずに、わざわざ二重に修正が必要な煩わしい方法が主流なのが疑問です。

是非メリットを教えていただけないでしょうか。