new操作符,静态成员函数不能成为virtual,它在对象构造完成之前进行使用
virtual函数使用1。动;2。静;均为对象构造完成之时进行使用的,所以并不能作为virtual函数使用
new操作符
1。返回值需void*;2。参数size_t,自动初始化;3。使用在未构造完成的对象上;
new和delete均为类的静态成员函数,自动成为静态的成员函数,无需显式指示
class B
{
public:
virtual void ok(){cout << "B::okokok" << endl;}
// void * operator new(size_t){void *p = NULL; return p;}
};
class D:public B
{
public:
virtual void ok(){cout << "D::okokok" << endl;}
};
int main()
{
B *p = new D;
p -> ok();
return 0;
}