No special reason except it's one of the extensions that g++ and clang++ by default recognize as C++ - from "man g++":
file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C
C++ source code which must be preprocessed. Note that in .cxx, the
last two letters must both be literally x. Likewise, .C refers to
a literal capital C.
For headers I usually use ".h" for C headers and ".hh" for C++ headers, but there are of course other options. Again, from "man g++":
file.hh
file.H
file.hp
file.hxx
file.hpp
file.HPP
file.h++
file.tcc
C++ header file to be turned into a precompiled header.
and it's also just what I've always used.
It's also fairly common in my experience; I've had several employers where that was the extension used and if you google for C++ code you'll often run into it.
Just out of curiosity, what do you normally name your C++ files?