最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

c++11中std::unique_ptr需要明确知道类型的析构函数,而sha

来源:动视网 责编:小OO 时间:2024-11-26 22:49:27
文档

c++11中std::unique_ptr需要明确知道类型的析构函数,而sha

在C++11中,std::unique_ptr的实现要求明确知道类型的析构函数。这是因为unique_ptr不包含controlblock,其中的deleter类型直接与unique_ptr结合,所以其析构函数必须能直接看到并调用completetype的析构函数。在构建unique_ptr时,仅需保存指向管理对象的指针,因此不需要明确知道completetype。而shared_ptr则相反,它包含controlblock,并通过虚函数调用deleter的析构函数,因此在构造时可以接受completetype。尽管C++标准没有详细规定这些实现细节,但在制定函数签名和特性时,考虑到合理的实现方式,最终形成的C++标准也遵循了这种实现逻辑。这种设计使得C++11中的智能指针在内存管理方面提供
推荐度:
导读在C++11中,std::unique_ptr的实现要求明确知道类型的析构函数。这是因为unique_ptr不包含controlblock,其中的deleter类型直接与unique_ptr结合,所以其析构函数必须能直接看到并调用completetype的析构函数。在构建unique_ptr时,仅需保存指向管理对象的指针,因此不需要明确知道completetype。而shared_ptr则相反,它包含controlblock,并通过虚函数调用deleter的析构函数,因此在构造时可以接受completetype。尽管C++标准没有详细规定这些实现细节,但在制定函数签名和特性时,考虑到合理的实现方式,最终形成的C++标准也遵循了这种实现逻辑。这种设计使得C++11中的智能指针在内存管理方面提供


在C++11中,std::unique_ptr的实现要求明确知道类型的析构函数。这是因为unique_ptr不包含control block,其中的deleter类型直接与unique_ptr结合,所以其析构函数必须能直接看到并调用complete type的析构函数。在构建unique_ptr时,仅需保存指向管理对象的指针,因此不需要明确知道complete type。而shared_ptr则相反,它包含control block,并通过虚函数调用deleter的析构函数,因此在构造时可以接受complete type。尽管C++标准没有详细规定这些实现细节,但在制定函数签名和特性时,考虑到合理的实现方式,最终形成的C++标准也遵循了这种实现逻辑。这种设计使得C++11中的智能指针在内存管理方面提供了灵活且安全的解决方案。

文档

c++11中std::unique_ptr需要明确知道类型的析构函数,而sha

在C++11中,std::unique_ptr的实现要求明确知道类型的析构函数。这是因为unique_ptr不包含controlblock,其中的deleter类型直接与unique_ptr结合,所以其析构函数必须能直接看到并调用completetype的析构函数。在构建unique_ptr时,仅需保存指向管理对象的指针,因此不需要明确知道completetype。而shared_ptr则相反,它包含controlblock,并通过虚函数调用deleter的析构函数,因此在构造时可以接受completetype。尽管C++标准没有详细规定这些实现细节,但在制定函数签名和特性时,考虑到合理的实现方式,最终形成的C++标准也遵循了这种实现逻辑。这种设计使得C++11中的智能指针在内存管理方面提供
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top