4.http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.4
5.http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface