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.
我想知道 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.