20 c++ operator-overloading new-operator
当我们重载类的new运算符时,我们将该函数声明为成员函数.例如:
class OpNew {
public:
OpNew() { cout << "OpNew::OpNew()" << endl;}
void* operator new(size_t sz) {
cout << "OpNew::new: "
<< sz << " bytes" << endl;
return ::new char[sz];
}
};
Run Code Online (Sandbox Code Playgroud)
声明如何在幕后OpNew *obj = new OpNew
工作?因为重载new是OpNew类的成员而不是静态的.那么编译器如何确保对new
成员函数的调用成功呢?
Ben*_*igt 34
一个operator new()
或operator new[]()
一个类总是一个静态类成员,即使它没有用关键字static声明.
C++标准所说的内容(草案n3242),部分内容[class.free]
如下:
类的任何分配函数
T
都是静态成员(即使未显式声明static
).
归档时间: |
|
查看次数: |
10330 次 |
最近记录: |