All of those examples are for different use cases:
A.h
#include "B.h"
#include "C.h"
class A
{
    void someFunction();
    B   b;
    C   c;
}
This adds objects b and c of types B and C respectively to your class A. Any object of type A will now have access to these 2 other objects. (just not outside of the class since they're implcitly private). This is vastly different from example 2 & 3 since it doesn't actually define any variables yet until you instantiate an object of A.
Example 2:
A.cpp
#include "B.h"
#include "C.h"
A::someFunction()
{
    B   b;
    C   c;
    // Do something with b and c.
}
This is usually the best scenario when you only need to use b and c inside someFunction and their changes don't have to be visible to the outside of the function. Note that their lifetimes are until the end of the function.
Example 3:
A.cpp
#include "B.h"
#include "C.h"
B   b;
C   c;
A::someFunction()
{
    // Do something with b and c.
}
Here, b and c are both global variables, globals are usually frowned upon because they make it hard to track what part of your code is doing what modification to these variables. A better alternative would be passing them around and defining them in main() if their lifetime should be the for entirety of the program.