13.45 左值引用:绑定到变量,返回左值引用的函数,及赋值,下标,解引用和前置递增递减运算符;右值引用,绑定临时对象,如返回非引用类型的函数,算术,关系,位及后置递增递减运算符。左值持久,右值短暂。
13.46 int &&r1; int &r2; int &r3; int &&r4;
13.47
String::String(const String &s):
sz(s.sz), p(alloc.allocate(sz))
{
cout << "Copy Constructor " << s.p << endl;
uninitialized_copy(s.p, s.p + sz, p);
}
13.48
#include <iostream>
#include "String.h"
#include <vector>
#include <cstring>
using namespace std;
allocator<char> String::alloc;
int main()
{
String s1("One"), s2("Two");
vector<String> vs;
vs.push_back(s1);
vs.push_back(s2);
return 0;
}
运行结果:push_back(s1)拷贝s1,push_ back(s2)&