Меняется ли тип указателя базового класса, указывающего на объект производного класса?
Если у меня есть что-то вроде:
class base{
public:
int a;
void doit();
};
class derived : public base {
public:
int a,b;
void doit();
}
И тогда я делаю следующее задание:
base *b = new derived;
cout << typeof(b);
Изменится ли тип указателя b на указатель производного или он останется прежним, т.е. указатель на базу? и почему?
Код должен быть таким:
class A
{};
class B:public A
{};int main()
{
A* a= new B();
cout<<typeid(a).name()<<endl;
}
выход: класс А *.
Поскольку тип подразумевает тип указателя (который является базовым *), а не тип объекта, на который он указывает.