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中的智能指针在内存管理方面提供