在很多情况下,我想传递对 const 字符串参数的引用,默认为空字符串。
void func(std::string const& z = std::string());
我想知道调用默认构造函数与传递对某个静态空字符串的引用的开销有多大?
void func(std::string const& z = my_staticEmptyStr);
列表和 vector 呢?
更新。不幸的是,除了在每个需要它的类中都有自己的拷贝外,我没有看到一个很好的通用方法来拥有静态空 xxx 对象。幸运的是,在我看来,STL 类的默认构造函数都不需要内存分配,因此我决定在所有路径上以传统方式执行此操作,但经常调用的路径除外。
最佳答案
这取决于实现。如果标准库中的字符串使用“小字符串优化”(大多数现代库都这样做),string
的默认构造函数可能只有三个指令那么小。 (将三个词归零)。
vector
和 list
的初始化也可以非常便宜,但这取决于实现。
关于字符串、列表、 vector 的默认构造函数的 C++ 成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320307/