new和::new
#include
#include
#include
using namespace std;
class T{
public: T(){ cout << "构造函数。" << endl; } ~T(){ cout << "析构函数。" << endl; } void * operator new(size_t sz){ T * t = (T*)malloc(sizeof(T)); //operator new就是简单的分配内存即可cout << "内存分配。" << endl; return t; } void operator delete(void *p){ free(p); cout << "内存释放。" << endl; return; }void operator + ( T &c2){cout << "operator +" << endl;}
}; int main()
{ T * t = ::new T(); // 先 内存分配 ,再 构造函数(new 用的是自己的operator new ,::new用的是外层的operator new) delete t; // 先 析构函数, 再 内存释放(用的是自己重载的operator delete)void *p = T::operator new(5);//直接调用构造函数。T t1;T::operator +(t1);//cannot call member function ‘void T::operator+(T&)’ without objectreturn 0;
}
参考文章如下:https://my.oschina.net/u/4526289/blog/5116696?_from=gitee_search
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
