Vad*_*kiv 6 c++ string qstring qt
我有一个QString变量作为struct成员。
使用默认值初始化它的最佳方法是什么:
struct Foo
{
QString name = "name";
// or
// QString name = QStringLiteral("name");
// or
// QString name = QLatin1String("name");
// or something else...
}
Run Code Online (Sandbox Code Playgroud)
QStringLiteral将具有最低的运行时开销。它是少数QString具有 O(1) 成本的文字初始化之一。QLatin1String将非常快,但在字符串长度上有 O(N) 成本。使用 C 字符串文字初始化将具有最高的 O(N) 成本,相当于 IIRC QString::fromUtf8("…")。第二次和第三次初始化还增加了 O(N) 内存成本,因为创建了字符串的副本 (!)。无论您在可执行文件大小方面所做的任何“节省”都会在程序启动时立即消失:(
通过QStringLiteralwins初始化,尽管您可能希望利用现代 C++11 自定义文字来缩短它。抵制为它使用宏的冲动:当您使用短符号污染全局命名空间时,这将是一种极其误导的方法。
| 归档时间: |
|
| 查看次数: |
2468 次 |
| 最近记录: |