64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class B{
public:
B(){cout << "ctor B" << endl;}
~B(){cout << "dtor B" << endl;}
void * operator new(size_t size, ostream& out){
out << "new B" << endl;
return ::operator new(size);
}
void operator delete(void *mem, ostream& out){
out << "delete B" << endl;
::operator delete(mem);
}
};
int main(){
B *pb = new (cout)B;
B *pb2 = ::new B;
//delete pb; 这句编译不通过,说no suitable ‘operator delete’ for ‘B’
::delete pb2;
}
using namespace std;
class B{
public:
B(){cout << "ctor B" << endl;}
~B(){cout << "dtor B" << endl;}
static void * operator new(size_t size, ostream& out){
out << "new B" << endl;
return ::operator new(size);
}
static void operator delete(void *mem, ostream& out){
out << "delete B" << endl;
::operator delete(mem);
}
static void operator delete(void *mem)
{
::operator delete(mem);
}
};
int main(){
B *pb = new (cout)B;
B *pb2 = ::new B;
delete pb;
::delete pb2;
}