C++11中的左值引用和右值引用
作者:网络转载 发布时间:[ 2015/5/13 13:58:07 ] 推荐标签:编程语言
非常量右值引用只能绑定到非常量右值,不能绑定到非常量左值、常量左值和常量右值(VS2010 beta版中可以绑定到非常量左值和常量左值,但正式版中为了安全起见,已不允许)。如果允许绑定到非常量左值,则可能会错误地窃取一个持久对象的数据,而这是非常危险的;如果允许绑定到常量左值和常量右值,则非常量右值引用可以用于修改常量左值和常量右值,这明显违反了其常量的含义。
常量右值引用可以绑定到非常量右值和常量右值,不能绑定到非常量左值和常量左值(理由同上)。
有了右值引用的概念,我们可以用它来实现下面的CMyString类。
class CMyString
{
public:
//构造函数
CMyString(const char *pszSrc = NULL)
{
cout<<"CMyString(const char *pszSrc = NULL)"<<endl;
if(pszSrc == NULL)
{
m_pData = new char[1];
*m_pData = '