「新明解C++」という参考書で勉強してますが、派生についての記載がないので質問します。

  1. virtualをすると再定義することが出来ると知ったのですが、newした時にデフォルトコンストラクタの挙動はどうなるのでしょうか?
  2. どっちの型でもnew 出来ますがどっちを利用すべきなんでしょか?

    base *b = new base;
    base *bb = new derive;
    
  3. また、デスストラクタの挙動はどうなるのでしょうか?


class base {
public:
    virtual void pri() {
        std::cout << "base\n";
    }
};

class derive : public base {
public:
    void pri() {
        std::cout << "virtual\n";
    }
};

int main() {

    base ba;
    derive de;

    base *b = new derive;
    base *bb = new base;
    derive *d = new derive;

    ba.pri();
    de.pri();
    std::cout << "\n\n";
    b->pri();
    bb->pri();
    d->pri();

    _getch();
    return 0;
}