C++中如何实现Python风格的序列化?

9 投票
5 回答
3768 浏览
提问于 2025-04-16 06:52

有没有人知道C++中有没有一种“语言级别”的功能可以用来序列化?我不想要像Boost序列化或者Google协议缓冲这样的东西。我想要的是一种可以自动序列化一个类的所有成员的工具(可以选择不序列化某些成员,可能是因为它们不能被序列化,或者我根本不想保存它们)。这可以通过在解析时进行额外的操作来实现,生成处理自动序列化的代码。有没有人听说过类似的东西?

5 个回答

1

在C++中,有一种标准的序列化方法,就是使用<<和>>这两个操作符。不过,你需要为每一个类自己实现这些操作符(听起来你不太想这么做)。有些人认为你应该总是实现这些操作符,当然,大多数人其实很少这么做。

2

有一种东西可以自动把一个类的所有成员序列化。

在C++中这是不可能的。像Python、C#、Java这些语言可以通过运行时的自我检查来实现这个功能。而在C++中,运行时类型信息(RTTI)并不够强大,无法做到这一点。

简单来说,C++语言本身没有任何东西可以让你在运行时发现一个对象的成员变量。如果没有这个功能,就无法自动序列化这些变量。

4

我觉得在没有运行时自省功能的语言中,是无法做到这一点的。

撰写回答