![]() |
#2
rjsp2014-04-22 10:47
|

#include <iostream>
#include <vector>
using namespace std;
class Foo
{
public:
Foo()=default;
Foo(initializer_list<int> il):data(il) {}
Foo sorted() &&;
Foo sorted() const &;
void print() const;
private:
vector<int> data;
};
Foo Foo::sorted() &&
{
sort(data.begin(),data.end());
cout<<"调用右值引用函数"<<endl;
return *this;
}
Foo Foo::sorted() const &
{
Foo ret(*this);
sort(ret.data.begin(),ret.data.end());
cout<<"调用左值引用函数"<<endl;
return ret;
}
void Foo::print() const
{
for(auto c:data)
cout<<c<<" ";
}
int main()
{
Foo f1({3,4,6,1,8,9,0,2}),f2({7,6,5,4,3});
f1.sorted();
std::move(f2).sorted();
f1.print();
f2.print();
return 0;
}
#include <vector>
using namespace std;
class Foo
{
public:
Foo()=default;
Foo(initializer_list<int> il):data(il) {}
Foo sorted() &&;
Foo sorted() const &;
void print() const;
private:
vector<int> data;
};
Foo Foo::sorted() &&
{
sort(data.begin(),data.end());
cout<<"调用右值引用函数"<<endl;
return *this;
}
Foo Foo::sorted() const &
{
Foo ret(*this);
sort(ret.data.begin(),ret.data.end());
cout<<"调用左值引用函数"<<endl;
return ret;
}
void Foo::print() const
{
for(auto c:data)
cout<<c<<" ";
}
int main()
{
Foo f1({3,4,6,1,8,9,0,2}),f2({7,6,5,4,3});
f1.sorted();
std::move(f2).sorted();
f1.print();
f2.print();
return 0;
}
成员函数sorted那里提示有错!不知道为什么?