/**
*一个模拟内存单元的类
*/
template <typename Object>
class MemoryCell
{
public:
explicit MemoryCell(const Object & initialValue = Object{})
: storedValue{initialValue}{}
const Object & read() const
{ return storedValue;}
void write(const Object & x)
{ storedValue = x;}
private:
Object storedValue;
};
显示的是MemoryCell模板。假设Object有一个零参数构造函数,一个拷贝构造函数和一个拷贝赋值运算符,MemoryCell虽像IntCell类,但是却为任何类型的Object工作。默认参数则是使用零参数构造函数一个Object对象所得的结果。
int main()
{
MemoryCell<int> m1;
MemoryCell<string> m2{"hello"};
m1.write(37);
m2.write(m2.read()+"word");
cout<<m1.read()<<endl<<m2.read()<<endl;
return 0;
}