Well your code won't compile so the question is a bit moot. To get your code to compile you'd have to rewrite it along the lines of the following:
Unfortunately it won't actually do anything at this point - all you've done is describe a pair of classes to the compiler and not actually told it to do anything.
However as soon as you actually try and create objects of type a or b the compiler will complain that the constructors for the objects are private and it can't create objects of those types.
When you fix that you'll probably find the linker complaining that it can't find definitions of a::a(), a::~a(), b::b() and b::~b(). By the time you fix that lot you'll have a program that you can probably execute AND find out the answers to what you want to know.