当我们重载类的新运算符时,我们将该函数声明为成员函数。
例如:

class OpNew {
public:
    OpNew() { cout << "OpNew::OpNew()" << endl;}
    void* operator new(size_t sz) {
         cout << "OpNew::new: "
            << sz << " bytes" << endl;
         return ::new char[sz];
    }
};
OpNew *obj = new OpNew语句如何在后台运行?因为重载new是OpNew类的成员,而不是静态的。那么编译器如何确保对new成员函数的调用成功?

最佳答案

An operator new() or operator new[]() for a class is always a static class member, even if it is not declared with the keyword static.

[class.free]部分中,C++标准所说的内容(草稿n3242):

关于c++ - 一类的重载运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5406199/

10-11 04:54