c++继承与派生,创建对象指针的问题

才开始接触面向对象,在c++继承与派生这里感觉有好多东西我都分不清了
比如说

class base{
//TODO
};
class derived:public base{
    //TODO
};

那么这几条语句分别是在干嘛,有什么区别吗

base *p = new base;
base *p = new derive;
base *p = new base();
base *p = new derive();

求依次解答一下,感谢。

第一个就是创建一个基类对象指针
第二个创建一个子类对象,但赋值给基类指针
第三个和第一个一样
第四个和第二个一样
默认构造函数可以不写括号。你的子类名写错了......