当前位置: 首页> 游戏> 单机 > 深圳龙岗网站维护_96633微信客服人工打不通_b站推广网站2024mmm_seo百度网站排名软件

深圳龙岗网站维护_96633微信客服人工打不通_b站推广网站2024mmm_seo百度网站排名软件

时间:2025/7/11 2:54:45来源:https://blog.csdn.net/weixin_43459437/article/details/143734023 浏览次数:1次
深圳龙岗网站维护_96633微信客服人工打不通_b站推广网站2024mmm_seo百度网站排名软件

对象优化及右值引用优化(三)

右值与左值

  • 左值:有名字有内存
  • 右值:没名字没内存,比如临时量

举例

class MyCString {
public:MyCString(const char* str = nullptr) {cout << "MyCString:: MyCString(const char* str)" << endl;if (str != nullptr){mptr = new char[strlen(str) + 1];strcpy(mptr, str);}else{mptr = new char[1];mptr[0] = '\0';}}~MyCString(){cout << "MyCString:: ~MyCString()" << endl;delete[]mptr;mptr = nullptr;}MyCString(const MyCString& rhs){cout << "MyCString::MyCString(const MyCString& rhs)" << endl;mptr = new char[strlen(rhs.mptr) + 1];strcpy(mptr, rhs.mptr);}MyCString& operator=(const MyCString& rhs){cout << "MyCString::operator=(const MyCString& rhs)" << endl;if (this == &rhs){return *this;}delete[]mptr;mptr = new char[strlen(rhs.mptr) + 1];strcpy(mptr, rhs.mptr);return *this;}MyCString(MyCString&& rhs){cout << "MyCString:: MyCString(MyCString&& rhs)" << endl;mptr = rhs.mptr;rhs.mptr = nullptr;}MyCString& operator=(MyCString&& rhs){cout << "MyCString:: operator=(MyCString&& rhs)" << endl;mptr = rhs.mptr;rhs.mptr = nullptr;return *this;}	const char* c_str()const {return mptr;}
private:char* mptr;
};MyCString getCStr(MyCString& str)
{const char* tmpstr = str.c_str();MyCString tmpStr(tmpstr);return tmpStr;
}int main()
{int c = 10;int& d = c;int&& e = 20;cout << e << endl;MyCString str1("World");MyCString&& str = MyCString("Hello"); // 右值引用是个左值str1 = str;return 0;
}

右值引用

右值引用是用&&符号表示的引用类型,允许我们绑定到右值上。这使得我们可以直接操作右值所拥有的资源,而不是拷贝它们

引用折叠

  • & + && = &
  • && + && = &&

移动语义与类型完美转发

  • std::move,移动语义直接得到右值类型
  • std::forward, 类型完美转发能够识别左值与右值
关键字:深圳龙岗网站维护_96633微信客服人工打不通_b站推广网站2024mmm_seo百度网站排名软件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: