C ++ lança ponteiro não referenciado

Qual é o tipo do objeto de exceção apresentado a seguir:

Pergunta1>range_error r("error"); throw r;

Answer1> um objeto de range_error

Pergunta2>exception *p = &r; throw *p;

Answer2> um objeto fatiado de exceção

Pergunta3>exception *p = &r; throw p;

Answer3> um ponteiro apontando para range_error é lançado. A manipulação de captura pode acessar as funções de membro range_error por meio de ligação dinâmic

Eu entendi essas perguntas, certo?

// Atualizado e compilado e executado no VS2010

#include <iostream>
using namespace std;

class ExClassA
{
public:
    virtual void PrintMe() const
    {
        cout << "ExClassA" << endl;
    }
};

class ExClassB : public ExClassA
{
public:
    virtual void PrintMe() const
    {
        cout << "ExClassB" << endl;
    }
};

int main(int argc, char* argv[])
{   
    ExClassB exClassB;
    ExClassA *p = &exClassB;

    try
    {
        throw *p;
    }
    catch (const ExClassA& e)
    {
        e.PrintMe();        
    }

    try
    {
        throw p;
    }
    catch (const ExClassA* e)
    {
        e->PrintMe();
    }
}

A primeira tentativa de captura do programa acima imprime "ExClassA"

A segunda tentativa de captura do programa acima imprime "ExClassB"

questionAnswers(3)

yourAnswerToTheQuestion