- 论坛徽章:
- 14
|
#include <iostream>
struct dam
{
friend std::ostream& operator<<( std::ostream& os, const dam& d );
public:
dam() : data_(0), len_(0)
{
}
dam& operator=( const dam& rhs )
{
data_ = rhs.data_;
len_ = rhs.len_;
return *this;
}
private:
int data_;
int len_;
};
std::ostream& operator<<( std::ostream& os, const dam& d )
{
return os << "data=" << d.data_ << "\tlen=" << d.len_;
}
struct greendam
{
friend std::ostream& operator<<( std::ostream& os, const greendam& d );
public:
greendam() : pvalue_( new dam() )
{
}
greendam( const greendam& rhs ) : pvalue_( new dam(*rhs.pvalue_) )
{
}
greendam& operator=( const greendam& rhs )
{
if( this != &rhs )
{
delete pvalue_;
pvalue_ = new dam( *rhs.pvalue_ );
}
return *this;
}
~greendam()
{
delete pvalue_;
}
private:
dam* pvalue_;
};
std::ostream& operator<<( std::ostream& os, const greendam& d )
{
return operator<<( os, *d.pvalue_ );
}
int main()
{
using namespace std;
dam a;
cout << a << endl;
greendam b;
cout << b << endl;
return 0;
} |
|