В моем примере:
При восходящем приведении не должен ли второй вызов d.print()
печатать «базу»?
Разве это не производный объект "d", преобразованный в объект базового класса?
А при даункастинге какие у него преимущества?
Не могли бы вы объяснить восходящее и нисходящее на практике?
#include <iostream>
using namespace std;
class Base {
public:
void print() { cout << "base" << endl; }
};
class Derived :public Base{
public:
void print() { cout << "derived" << endl; }
};
void main()
{
// Upcasting
Base *pBase;
Derived d;
d.print();
pBase = &d;
d.print();
// Downcasting
Derived *pDerived;
Base *b;
pDerived = (Derived*)b;
}
pBase
должна изменить поведение строкиd.print();
? Вы хотели спросить оpBase->print();
? - person M.M   schedule 01.02.2016