unique_ptr 的这两种用法有什么区别?
What is the difference between these two uses of unique_ptr?
Class“a”包含属性:service_ 类型 boost::asio_ioservice 和 sock_,一个 unique_ptr 类型 boost::asio::ip::tcp::socket.
存在以下构造函数代码,其中 sock_ 正确指向新的套接字对象。
a::a() : service_(), sock_(new boost::asio::ip::tcp::socket(service_))
{
}
下面的构造函数代码没有。调试器将 sock_ 列为 "empty".
a::a() : service_(), sock_(nullptr)
{
sock_(new boost::asio::ip::tcp::socket(service_));
}
为什么?
作为声明:
sock_(new boost::asio::ip::tcp::socket(service_));
根本不是有效的 c++。有没有想到
sock_.reset(new boost::asio::ip::tcp::socket(service_));
代替?
或者
sock_ = std::make_unique<boost::asio::ip::tcp::socket>(service_);
Class“a”包含属性:service_ 类型 boost::asio_ioservice 和 sock_,一个 unique_ptr 类型 boost::asio::ip::tcp::socket.
存在以下构造函数代码,其中 sock_ 正确指向新的套接字对象。
a::a() : service_(), sock_(new boost::asio::ip::tcp::socket(service_))
{
}
下面的构造函数代码没有。调试器将 sock_ 列为 "empty".
a::a() : service_(), sock_(nullptr)
{
sock_(new boost::asio::ip::tcp::socket(service_));
}
为什么?
作为声明:
sock_(new boost::asio::ip::tcp::socket(service_));
根本不是有效的 c++。有没有想到
sock_.reset(new boost::asio::ip::tcp::socket(service_));
代替?
或者
sock_ = std::make_unique<boost::asio::ip::tcp::socket>(service_);