头疼、、头疼。。多参数operator new运算符号重载和多参数constructor函数有什么关系?谢谢。(穷,没有分了。请帮忙)

TemplatesGuy 2005-03-28 11:42:54
RT
...全文
154 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
9731boy 2005-03-29
  • 打赏
  • 举报
回复
line1 的调用 :

先执行new 再调用你对应的构造函数

#include <iostream>
#include <map>
using namespace std;

class td
{
public:
td(int i,int j)
{
cout << "td()" <<endl;
}
inline void * operator new(size_t j,void *p)
{
cout << "op new" <<endl;
return p;
}

};


int main(int argc, char argv[])
{
cout << "Hello World!\n";
td *t = new td[10](1,1);
delete t;
return 0;
}
先调用 op new 每个op new 再调用对应的构造函数


tip9914 2005-03-29
  • 打赏
  • 举报
回复
重载new运算符可以自己进行内存管理,一般情况下不需要,但是特殊情况下,比如一些特殊的数据结构,用自己的new可以大大提高程序的效率,
而构造函数是用来初始化一个对象的,
当调用new运算符的时候会有两个动作:1。为对象分配相应的空间,2,调用构造函数,初始化该对象
TemplatesGuy 2005-03-29
  • 打赏
  • 举报
回复
up
TemplatesGuy 2005-03-28
  • 打赏
  • 举报
回复
up
TemplatesGuy 2005-03-28
  • 打赏
  • 举报
回复
比如:

class X
{
public:
void f();
static void *operator new(p1,p2); //line 1
}

class Y
{
public:
void f();
Y(p1,p2); /////line 2

}

=====================================
line1和line2的有什么不同?




64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧