C++运算符重载问题10

下列哪些运算符函数不能是全局的,即必须是成员函数。 (A) 刚出现的 (B) 删去 (C) 转换运算符 (D) 所有这些 答复: (C) 说明: new和delete可以是全局的,参见下面的示例。

null

#include
#include
#include

using namespace std;

class Myclass {
    int x;
public:
    friend void* operator new(size_t size);
    friend void operator delete(void*);
    Myclass(int i) {
        x = i;
        cout << "Constructor called ";
    }
    ~Myclass() { cout << "Destructor called "; }
};


void* operator new(size_t size)
{
    void *storage = malloc(size);
    cout << "new called ";
    return storage;
}

void operator delete(void *p )
{
    cout<<"delete called ";
    free(p);
}

int main()
{
    Myclass *m = new Myclass(5);
    delete m;
    return 0;
}

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享