Chinaunix首页 | 论坛 | 博客
  • 博客访问: 988498
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

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;
}

阅读(1015) | 评论(0) | 转发(0) |
0

上一篇:编译期时立即数溢出

下一篇:暂存

给主人留下些什么吧!~~