猿问
什么是奇怪的重复模板模式(CRTP)?
什么是奇怪的重复模板模式(CRTP)?
没有参考一本书,谁能给出一个很好的解释
CRTP
用一个代码示例?
慕的地6264312
浏览 572
回答 3
3回答
米脂
这里你可以看到一个很好的例子。如果使用虚拟方法,程序将知道运行时执行的是什么。实现CRTP编译器是在编译时决定的!这是一场精彩的表演!template <class T>class Writer{ public: Writer() { } ~Writer() { } void write(const char* str) const { static_cast<const T*>(this)->writeImpl(str); //here the magic is!!! }};class FileWriter : public Writer<FileWriter>{ public: FileWriter(FILE* aFile) { mFile = aFile; } ~FileWriter() { fclose(mFile); } //here comes the implementation of the write method on the subclass void writeImpl(const char* str) const { fprintf(mFile, "%s\n", str); } private: FILE* mFile;};class ConsoleWriter : public Writer<ConsoleWriter>{ public: ConsoleWriter() { } ~ConsoleWriter() { } void writeImpl(const char* str) const { printf("%s\n", str); }};
0
0
0
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
C
typedef入门问题
1 回答
我要回答