周星星 阅读(1161) 评论(0)

原文章来源: http://bbs.pfan.cn/post-286402.html,作者:eastcowboy

// 前置声明
struct foo;
foo& create_foo();

// 调用foo::operator&和foo::~foo
int main()
{
    foo& a = create_foo();
    delete &a;

    return 0;
}

// 一般放在另一个不同的文件中
#include <iostream>
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;
}


发表评论
切换编辑模式