练习13.55
为你的StrBlob添加一个右值引用版本的Push_back
void StrBlob::push_back(string&&s){data->push_back(std::move(s));}
练习13.56
如果sorted定义如下,会发生什么
Foo Foo::sorted()const &{
Foo ret(*this);
return ret.sorted();
}
::无限递归
练习13.57
如果sorted定义如下,会发生什么?
Foo Foo::sorted()const &{return Foo(*this).sorted();}
::会调用右值版本,进行排序
练习13.58
编写新版本的Foo类,其sorted函数中有打印语句,测试这个类,证明你的答案
#include <vector> #include <iostream> #include <algorithm> using namespace std; class Foo { public: Foo sorted()&&; Foo sorted() const&; private: vector<int> data; }; Foo Foo::sorted()&& { sort(data.begin(), data.end()); cout << "&&" <<endl; return *this; } Foo Foo::sorted() const& { cout << "const &" << std::endl; return Foo(*this).sorted(); } int main() { Foo().sorted(); Foo f; f.sorted(); }
标签:Foo,const,58,练习,13.55,back,sorted,primer,data From: https://www.cnblogs.com/yddl/p/16592999.html