编译器可以暗自为class创建default构造函数,copy构造函数,copy assignment操作符,以及析构函数
#include <iostream>
#include<cstdio>
#include<cstring>
#include<effective_c.h>
using namespace std;
template<class T>
class TextBlock
{
public:
TextBlock(string & cur,const T& i)
:MAXN(i),
p(cur){}
private:
const T MAXN;
string & p;
};
int main()
{
string astr("a");
string bstr("b");
TextBlock<int> a(astr,1,1);
TextBlock<int> b(bstr,2,2);
a = b;
//编译错误,如果无法完成正常的赋值
//编译器会拒绝自动生成copy assignment
//c++不允许让reference指向不同的对象
}