C++ 如何包装PIMPL,隐藏原始指针

C++ 如何包装PIMPL,隐藏原始指针,c++,C++,在Sean Parent的“走向本土”演讲中,他建议尽可能少使用隐含所有权的指针。他指出,在00:53:06包装一个PIMPL实现是微不足道的。 我不太明白他在这里的意思。我认为实现指针总是隐藏在使用它们的类中。是否有一些额外的层,可以使PIMPL更方便,我错过了 编辑: 早些时候,他说unique_ptr和shared_ptr都算作原始指针。这就是为什么我感到困惑,我知道unique_ptr和shared_ptr简化了资源处理。我不知道有什么方法可以进一步隐藏它们。是的。使用一个。使用pim

在Sean Parent的“走向本土”演讲中,他建议尽可能少使用隐含所有权的指针。他指出,在00:53:06包装一个PIMPL实现是微不足道的。

我不太明白他在这里的意思。我认为实现指针总是隐藏在使用它们的类中。是否有一些额外的层,可以使PIMPL更方便,我错过了

编辑: 早些时候,他说
unique_ptr
shared_ptr
都算作原始指针。这就是为什么我感到困惑,我知道
unique_ptr
shared_ptr
简化了资源处理。我不知道有什么方法可以进一步隐藏它们。

是的。使用一个。使用pimpl习惯用法的类“拥有”原始指针,最好尽量少拥有原始指针

class T {
public:
    T() : impl{} {};
private:
    struct impl;
    std::unique_ptr<impl> pImpl_;
}
T类{
公众:
T():impl{}{};
私人:
结构impl;
标准::唯一性;
}

通过使用类似于
unique\u ptr的方法,将其隐藏在类实现本身之外,并避免编写3 | 5的组。