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