2012年(158)
分类: C/C++
2012-11-23 16:53:04
原文章来源: ,作者:
// 前置声明
struct foo;
foo&
create_foo();
// 调用foo::operator&和foo::~foo
int main()
{
foo& a =
create_foo();
delete &a;
return 0;
}
// 一般放在另一个不同的文件中
#include
using namespace std;
struct foo
{
foo()
{
cout << "foo()"
<< endl;
}
foo( const foo& )
{
cout
<< "foo( const foo& )" << endl;
}
foo&
operator=( const foo& )
{
cout << "operator="
<< endl;
return *this;
}
~foo()
{
cout << "~foo()" << endl;
}
private:
const foo* operator&() const
{
cout <<
"operator&" << endl;
return this;
}
foo*
operator&()
{
cout << "operator&" <<
endl;
return this;
}
};
foo& create_foo()
{
return *new foo;
}