45 lines
1.2 KiB
C++
45 lines
1.2 KiB
C++
|
Fig01_19.cpp - MemoryCell class template without separation
|
||
|
|
||
|
#include <iostream.h>
|
||
|
#include "mystring.h"
|
||
|
|
||
|
|
||
|
/**
|
||
|
* A class for simulating a memory cell.
|
||
|
*/
|
||
|
template <class 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;
|
||
|
};
|
||
|
|
||
|
// OOPS: I forgot to put a + operator in the string class.
|
||
|
// So it's here:
|
||
|
|
||
|
string operator+( const string & lhs, const string & rhs )
|
||
|
{
|
||
|
string result = lhs;
|
||
|
return result += rhs;
|
||
|
|
||
|
}
|
||
|
|
||
|
int main( )
|
||
|
{
|
||
|
MemoryCell<int> m1;
|
||
|
MemoryCell<string> m2( "hello" );
|
||
|
|
||
|
m1.write( 37 );
|
||
|
m2.write( m2.read( ) + " world" );
|
||
|
cout << m1.read( ) << endl << m2.read( ) << endl;
|
||
|
|
||
|
return 0;
|
||
|
}
|