Interface in C++

Interface In C++问题提出

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

struct IPerson {

virtual std::string Name() = 0;

virtual uint32_t Age() = 0;

};

我们搞了一个几个纯虚函数来表示一个接口类,然后我们都会搞一些类来继承这个类,就像下面这样:

struct Student : public ......

Compile Time Reflection in C++11

故事背景

预备部分

模板类

宏(macro)

宏参数个数

构造字符串序列

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

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

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

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

结合其他宏使用

故事背景

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

class Foo {

int bar1;

int bar2;

int bar3;

std::string bar4;

int bar5;

std::string ToJsonString();

};

std::string Foo::ToJ......

在C++17中的部分新特性

C++17已经发布了有一些时候,并且很多的编译器已经完成了对C++17的支持,那对于C++17中的新特性,我也好奇的玩了一些,其中的几个新特性特别吸引我的注意。

if-init

Grammar

if ( init-statement condition )

init-statement 可以是:

表达式语句(可以是空语句,仅;)

声明语句

Thinking

if-init 这个 feature 尝试着让我们的代码更可读和干净,并且可以帮助我们更好的控制对象的生命周期。在从前的 if 语句中,我们经常会做类似的事情:

void foo(int a) {

au......