.%28自C++17%29以来r.lock()可以用于相同目的:区别在于,如果参数为空,则此构造函数将引发异常,而std::weak_ptr<T>::lock()构造空std::shared_ptr那样的话