123456789101112131415161718192021222324252627282930313233 |
- //CRTP是一种cpp中独特的设计模式,也是C++多态(静态)的一种实现方法
- //相比与运行时多态的好处是直接生成机器码,有更好的性能但是灵活性更差,生成的代码体积更大
- #include<iostream>
- template<typename T>
- class basic
- {
- public:
- void sent()
- {
- get_T().sent();
- }
- private:
- T& get_T(){return static_cast<T&>(*this);}
- friend T;
- };
- class sent_to_screen:public basic<sent_to_screen>
- {
- public:
- void sent()
- {
- std::cout<<"hello world"<<std::endl;
- }
- };
- int main()
- {
- basic<sent_to_screen> hello;
- hello.sent();
- }
|