私は、新しい演算子のオーバーロードについてはわかりません。 私はクラスMyClassを持っているとしますが、MyClass.h MyClass.cppとmain.cppファイルは同じです。size_tパラメータnew演算子
//MyClass.h
class MyClass {
public:
//Some member functions
void* operator new (size_t size);
void operator delete (void* ptr);
//...
};
//MyClass.cpp
void* MyClass::operator new(size_t size) {
return malloc(size);
}
void MyClass::operator delete(void* ptr) {
free(ptr);
}
//main.cpp
//Include files
//...
int main() {
MyClass* cPtr = new MyClass();
delete cPtr
}
である。このプログラムは正常に動作しています。しかし、私が理解できないことは、新しい演算子がパラメータなしでどのように呼び出されるのか、その定義には "size_t size"のような関数パラメータがあります。私がここで欠けている点はありますか?おかげさまで
コンパイラが自動的 –
のサイズを通過[このSOの答えを見て](http://stackoverflow.com/questions/9595758/how-is-the-c-new-operator-implemented) – pasty