关于通过引用传递智能指针有很多问题。我没有找到一个明确的答案:我们可以将 nullptr 传递给通过引用接受智能指针的方法吗?
例子:
void myFunc(std::shared_ptr<std::string> &myStrRef) {
// do something
}
void main() {
myFunc(nullptr);
}
Run Code Online (Sandbox Code Playgroud)
我们可以将 nullptr 传递给通过引用接受智能指针的方法吗?
不使用非常量左值引用。
void myFunc(std::shared_ptr<std::string> &myStrRef) {
// do something
}
void main() {
myFunc(nullptr);
}
Run Code Online (Sandbox Code Playgroud)
将无法编译,因为myStrRef无法绑定到临时对象。如果你有
void myFunc(const std::shared_ptr<std::string> &myStrRef) {
// do something
}
// or
void myFunc(std::shared_ptr<std::string> &&myStrRef) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
那么这将是合法的,因为这些引用可以绑定到一个临时对象。