CPath 是否执行引用计数?

Does CPath perform reference counting?

我想知道 ATL 的 CPath 是否像底层的 CString 那样工作,因为赋值将导致引用计数而不是深拷贝。我在文档中没有看到任何关于它的内容,而且我不确定如何测试它。这里有一些可能相关的来源,但我不确定:

template< typename StringType >
class CPathT
{
public:
    typedef typename StringType::XCHAR XCHAR;
    typedef typename StringType::PCXSTR PCXSTR;
    typedef typename StringType::PXSTR PXSTR;

public:
    CPathT() throw()
    {
    }
    CPathT(_In_ const CPathT< StringType >& path) :
        m_strPath( path.m_strPath )
    {
    }
    CPathT(_In_z_ PCXSTR pszPath) :
        m_strPath( pszPath )
    {
    }

    operator const StringType& () const throw()
    {
        return m_strPath;
    }
    operator StringType& () throw()
    {
        return m_strPath;
    }
    operator PCXSTR() const throw()
    {
        return m_strPath;
    }
    
    ...

public:
    StringType m_strPath;
};

typedef CPathT< CString > CPath;

非常感谢您提供任何信息。

如您在上面的代码中所示,CPath 只是 CString 的包装器,因此它封装了其所有属性和行为。从逻辑上讲,它使用 CString reference counting.