Может ли кто-нибудь объяснить, как работает общий_ptr?C++

Программы на C++. Форум разработчиков
Anonymous
Может ли кто-нибудь объяснить, как работает общий_ptr?

Сообщение Anonymous »

Я пытаюсь понять, как работает пример Chat_server из документации boost::asio.
У меня есть такой обработчик для обработчика async_accept:

Код: Выделить всё

void chat_server::do_accept()
{
acceptor_.async_accept(
[this](boost::system::error_code ec, tcp::socket socket)
{
if (!ec)
{
std::make_shared(std::move(socket), room_)->start(); //????
}
std::cout start();
Насколько я понимаю, он создает анонимный общий указатель на классchat_session, перемещает в него полученный сокет и добавляет ссылку на room_ и означает при запуске функции start()?
  • Как мне переписать этот код, например, в больше строк:

Код: Выделить всё

chat_session A(std::move(socket), room_); // create class
std::make_shared(A);
A->start()
  • Как я понимаю из Basic_socket_acceptor::async_accept, мне нужно создать для себя сокет и добавить его в Acceptor. А в этой функции она создает для себя акцептора?
Я пытаюсь понять, как работает эта функция.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -ptr-works

Вернуться в «C++»