compare-between-crtp-and-virtual

我们平时都会使用虚函数来实现 C++ 里的运行时的多态,但是虚函数会带来很多性能上面的问题:

虚函数的调用需要额外的寻址

虚函数不能被 inline,当使用比较小的虚函数的时候会带来很严重的性能负担

需要在每个对象中维护一个额外的虚函数表

但是在有些情况下,我们就可以用一些静态的类型分发策略来带来一些性能上面的好处。

一个传统的例子struct VirtualInterfa......

Interface in C++

Interface In C++问题提出

我记得我不止一次提到说,我更喜欢 golang 的泛型设计。一个优秀的泛型系统,我希望是来表示一个方法可以接受什么。应该是一个类似于 concept 的概念。我们都知道,在 C++ 里面,我们更多的使用虚函数来实现这个功能,就像下面这样:

struct IPerson {

virtual std::string Name() = 0;

virtual......

Compile Time Reflection in C++11

故事背景

预备部分

模板类

宏(macro)

宏参数个数

构造字符串序列

将参数序列转成字符串序列

将一个操作写入所有的宏参数

使用一个类来保存这些宏信息

使用模板函数来获取这些元信息

结合其他宏使用

故事背景

故事发生在遥远的我在使用C++来处理JSON和对象绑定的时候,我厌倦了写这样的代码:

class Foo {

int bar1;......