标签 C++ 下的文章

Protocol Buffers (亦称,protobuf) 是Google的轻便高效的结构化数据存储格式,它独立于语言,独立于平台,可扩展。你可以在 protobuf's documentation on the Google Developers site 找到它。

Protocol Buffers可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

为什么不使用XML?同XML相比,Protocol buffers在序列化结构化数据方面有许多优点(Google官方提出):

  • 更简单;
  • 数据描述文件只需原来的1/10至1/3;
  • 解析速度是原来的20倍至100倍;
  • 减少了二义性;
  • 生成了更容易在编程中使用的数据访问类。

类似的协议还有MessagePack等。

- 阅读剩余部分 -

注释虽然写起来很痛苦,但对保证代码可读性至关重要。下面的规则描述了如何注释以及在哪儿注释,当然也要记住:注释固然很重要,但最好的代码本身应该是自文档化。有意义的类型名和变量名,要远胜过要用注释解释的含糊不清的名字。

- 阅读剩余部分 -

内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元直到程序结束(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。

Qt Creator 只是一个 IDE,本身不具备内存泄漏检测功能,所以需要使用第三方内存泄漏检测工具。

- 阅读剩余部分 -

某些 C++ 序列类型在 QML 中被显式地作为 JavaScript 数组类型支持。

QML当前支持如下类型:

  • QList<int>
  • QList<qreal>
  • QList<bool>
  • QList<QString> and QStringList
  • QList<QUrl>

这些序列类型都直接在底层的 C++ 程序来实现的。有两种方法可以把这样的序列类型在 QML 和 C++ 之间相互暴露:使用 Q_PROPERTY 修饰序列类型或使用 Q_INVOKABLE 方法。

- 阅读剩余部分 -