P21:递归复合
复合----------->本来是三个参数,内含tup<两个参数>
class tup<Head, Tail...>-------------------->一共有4个参数,一个参数➕三个参数
一共有两个变量,m_head、m_tail
Head m_head; composited m_tail; //复合,创建了其他class的对象m_tail
m_head就是第一个参数,m_tail就是后面的一包参数
使用后面的一包参数,递归的创建自己,并typedef为composited----------->typedef tup<Tail...> composited
head()函数------------------->返回类型是Head
返回值是m_head
Head head() { return m_head; }
tail()函数--------------------->返回类型是composited
返回值m_tail
Composited& tail() { return m_tail; }
传回来一定要是引用-------------->如果传回来不是引用的话,等于是做一份拷贝出去,tail()将来在使用的时候,为了一个一个取出元素,如果传出来的是copy版本的话(不是引用),取值没有问题,但是如果要改内容,不可以,因为传出来的是拷贝的版本,不是本尊