How to use RecursiveASTVisitor of clang to visit the functions implementation in c++?

For example: the entry file of filemanager is "testcase.cpp", which including
"#include test01.h", and "test01.h" has a class "Test", which a method
declaration "void sayHi();", and implementation of "sayHi" locates in
"test01.cpp".

For the above assumption, how can I use the the VisitCXXMethodDecl in
RecursiveASTVisitor to get the implementation of sayHi(), and When invoke
the method hasBody() of VisitCXXMethodDecl when visiting the sayHi()
function, hasBody() return false.

The puzzle is how I can get the implementation of the sayHi() with
"testcase.cpp" as the file entry of the source manager in the current
CompilerInstance.

For the constructor and deconstructor, the puzzles also arise....

Thanks in advance!!

For example: the entry file of filemanager is "testcase.cpp", which
including
"#include test01.h", and "test01.h" has a class "Test", which a method
declaration "void sayHi();", and implementation of "sayHi" locates in
"test01.cpp".

For the above assumption, how can I use the the VisitCXXMethodDecl in
RecursiveASTVisitor to get the implementation of sayHi(), and When invoke
the method hasBody() of VisitCXXMethodDecl when visiting the sayHi()
function, hasBody() return false.

You'll get a callback per declaration - in this case, you should get 2
calls of VisitCXXMethodDecl, and the second declaration is also a
definition, which will have hasBody() return true.