CRTP.cpp 620 B

123456789101112131415161718192021222324252627282930313233
  1. //CRTP是一种cpp中独特的设计模式,也是C++多态(静态)的一种实现方法
  2. //相比与运行时多态的好处是直接生成机器码,有更好的性能但是灵活性更差,生成的代码体积更大
  3. #include<iostream>
  4. template<typename T>
  5. class basic
  6. {
  7. public:
  8. void sent()
  9. {
  10. get_T().sent();
  11. }
  12. private:
  13. T& get_T(){return static_cast<T&>(*this);}
  14. friend T;
  15. };
  16. class sent_to_screen:public basic<sent_to_screen>
  17. {
  18. public:
  19. void sent()
  20. {
  21. std::cout<<"hello world"<<std::endl;
  22. }
  23. };
  24. int main()
  25. {
  26. basic<sent_to_screen> hello;
  27. hello.sent();
  28. }