Question regarding destructor and member functions in C++ source

Hi all,

I was wondering why most of the gnuradio blocks don’t have destructor
even though they have constructor defined in C++ source(e.g.
gr_ofdm_mapper_bcv.cc)? Is that due to the features of smart pointer,
boost::shared_ptr ?

Another question is : What is the difference between using
“class_name::work()” and “class_name::general_work()”. I guess it might
depend on their base class (gr_block and gr_sync_block) where they are
derived from. I have been using gr_sync_block as my base class. But I
don’t know the reason for that. How do I know which base class I should
use?

Thanks in advance.

Milo