c – 将一个const引用参数初始化为默认参数会导致悬空引用吗?

前端之家收集整理的这篇文章主要介绍了c – 将一个const引用参数初始化为默认参数会导致悬空引用吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > What is the lifetime of a default argument temporary bound to a reference parameter?2个
void foo(const std::string& s = "abc") {
    // ...
}

// ...

int main() {
    // ...
    foo();
    // ...
}

foo会晃来晃去吗?我认为因为std :: string将从默认值“abc”构造,然后这将是一个const引用do death temporary.

我对吗?

解决方法

std :: string(const char *)的构造函数将用于构造一个临时函数,该临时函数将在函数的整个生命周期内生效.

所以没有问题.

猜你在找的C&C++相关文章