Qt QML 杂记

Qt 拾遗 001 一些杂项

2020-04-03  本文已影响0人  赵者也
  1. 尽管在函数原型中参数名称可有可无,但在编程实践中最好是将其加上,这将使代码更易读。

  2. 函数的签名(signature)由名称和参数表组成。在 C++ 中,函数的返回类型不属于签名。

  3. 在 Windows 平台,如果想要建立一个“控制台”应用,需要在 pro 文件中加人一行 CONFIG += console ,“控制台”应用使用户可以通过标准输入/输出流进行交互

  4. 对于 Mac 上的控制台程序,如果在工程文件中添加一行 CONFIG -= app_bundle,就可以阻止创建一个 app bundle,它会将可执行文件放入一个子目录下。这样做还允许用户与标准 I/O 的交互。然后就可以使用命令行 qmake -spec macx-g++ 创建一个 Makefile。这样,命令 make 就只会为应用创建一个可执行文件

  5. qmake -r 命令:有些工程文件是 SUBDIRS(子目录),这意味着沿着文件树递归地同时运行 qmake 和 make。如果有来自旧版本 Qt 的 Makefile 文件,并且希望立即强制重新生成全部的 Makefile,则可以使用 qmake -r 命令,以沿着文件树向下递归地产生全部的 Makefile

  6. QString,优于 STL 中的字符串类型,因为它有丰富的 API 且更容易使用。它的实现支持延迟写时复制(lazy copy-on-write)和隐式共享(implicit sharing),所以函数能够接收 QString 类型的实参并返回 QString 类型的值,而不必每一次都为字符串分配内存并进行复制。此外,QString 还内置支持 Unicode 标准,以方便程序的国际化。

  7. 关键字 explicit 将阻止编译器为了隐式转换而自动使用构造函数

  8. 由于 this 是在执行它的构造函数时被初始化的(或者执行它的析构函数时被销毁),因此不要期望在这两种条件下能够执行正确的运行时绑定。因为构造函数设置的 virtual 函数表(它对运行时绑定至关重要)可能是不完整的(或者析构函数只是部分地销毁了它),所以当在构造函数或者析构函数中调用任何 this 方法时,都将由编译时绑定决定应该调用哪一个方法,就好像不存在 virtual 关键帧一样。正如 Scott Meyers 所说的那样:“构造函数或者析构函数中不存在 virtual 方法”

  9. 如果类中包含一个或者多个 virtual 函数,则也应该包含一个虚析构函数。这是因为,当对多态对象集合进行操作时,通常是通过基类指针删除这些对象,这会导致对析构函数的间接调用。如果析构函数不为 virtual 类型,则编译时绑定将决定应该调用哪一个析构函数,从而可能导致派生对象的不完整析构

上一篇下一篇

猜你喜欢

热点阅读