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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部