Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 从中继承enable_shared_的目的是什么?_C++11 - Fatal编程技术网

C++11 从中继承enable_shared_的目的是什么?

C++11 从中继承enable_shared_的目的是什么?,c++11,C++11,类T从std::enable_shared_from_this继承的意义是什么?我似乎不明白你为什么不创建一个std::shared\u ptr? 如果您想返回一个std::shared\u ptr,而*它已经由一个std::shared\u ptr拥有,并且您不从这个返回shared\u,而是返回一个新的std::shared\u ptr,那么您将得到两个共享指针,它们不知道它们都拥有相同的对象,因此use\u计数将错误,这将导致双重删除,这是未定义的行为。首先,这不是一个类型,不能将其作为模

类T从std::enable_shared_from_this继承的意义是什么?我似乎不明白你为什么不创建一个std::shared\u ptr?

如果您想返回一个std::shared\u ptr,而*它已经由一个std::shared\u ptr拥有,并且您不从这个返回shared\u,而是返回一个新的std::shared\u ptr,那么您将得到两个共享指针,它们不知道它们都拥有相同的对象,因此use\u计数将错误,这将导致双重删除,这是未定义的行为。

首先,这不是一个类型,不能将其作为模板参数提供给shared_ptr。然后,目的是允许在对象中为此安全创建共享\u ptr。