什么情况下用new ?解决办法

什么情况下用new ?
小弟学计算机刚两年,   对C++比较感兴趣,   以前听别人说应该少用new.但是刚看设计模式的书,发现里面经常用new
class   CFather()
{
  virtual   void   Draw();
}
..
class   CSon1   :   public   CFather
{
    void   Draw(){}
}
...
class   CSon2   :   public   CFather
{
  void   Draw(){}
}
..
CFather*   pf;
CSon1         son1;
pf   =   &son1;
pf-> Draw();

CFather*   pf;
CSon1*         son1   =   new   CSon1;
pf   =   son1;
pf-> Draw();
delete   son1;    
哪中比较好,   想请教大虾什么情况下用new才合适...

------解决方案--------------------
关键还是习惯问题~~

用 new 带来的问题不大.....

如果对象比较庞大,
或者 对象需要跨作用域操作,
那么,就使用 new ~~