一个关于c++ primer 中间智能指针的有关问题

一个关于c++ primer 中间智能指针的问题。
c++ primer(edition 4 13.5.1)中间智能指针类的声明如下:

class U_Ptr {
  friend class HasPtr;
  int *ip;
  size_t use;
  U_Ptr(int *p): ip(p), use(1) { }
  ~U_Ptr() { delete ip; }
};

class HasPtr {
public:
  // HasPtr owns the pointer; pmust have been dynamically allocated
  HasPtr(int *p, int i): ptr(new U_Ptr(p)), val(i) { }
  // copy members and increment the use count
  HasPtr(const HasPtr &orig): ptr(orig.ptr), val(orig.val) { ++ptr->use; }
  HasPtr& operator=(const HasPtr&);
  // if use count goes to zero, delete the U_Ptr object
  ~HasPtr() { if (--ptr->use == 0) delete ptr; }
private:
  U_Ptr *ptr; // points to use-counted U_Ptr class
  int val;
};

我的问题是,HasPtr类的成员变量 “int val” 到底有什么用? 因为如同书上的具体使用过程中:

int* p = new int(42);
HasPtr obj(p, 10);

42的意义不言而喻,10在这里到底是什么意义? 如果没有意义,val为什么还要保留呢?
希望大家帮忙解答,谢谢。


------解决方案--------------------
意义不大。可有可无
------解决方案--------------------
没什么用,就一个数据成员而已
------解决方案--------------------
说得很有道理!
但有时候我们认为无意义的东西,别人却不这么认为的!
比如:要求用清水冲洗盘子10遍,聪明的人认为冲洗2遍就可以了,其他8遍没有意义!