首页 新闻 会员 周边 捐助

关于new运算符重载的问题

0
[待解决问题]

我是一名c++初学者,最近学习了 new运算符重载。在相关的文章种看到了关于operator new函数的介绍。

其中主要代码如下:

void* operator new(size_t size)  //针对new+对象
{
	cout << "new" << endl;
	return operator new(size);
}

当运行此代码后,会进入无限循环中
代码改为:

void* operator new(size_t size)  //针对new+对象
{
	cout << "new" << endl;
	return ::operator new(size);
}

文章的解释是 ,我是对new进行的重载,调用opertor new函数会使进入循环,应将opertor new改为全局性质的 ::operator new(size)
我不理解的是,我明明是对new进行的重载,和opertor new函数有啥关系。为啥调用opertor new 会使代码进入循环?

爱沉浮的主页 爱沉浮 | 菜鸟二级 | 园豆:202
提问于:2025-03-17 00:36
< 人人可用的开源BI工具
分享
所有回答(1)
0

operator new虽然特殊,但它也是函数,你把它当成一个全局类的一个虚函数,你就明白为什么了。

void* operator new(size_t size)  //针对new+对象
{
	cout << "new" << endl;
	return operator new(size);
}

就可以被认为是:

void* newsth(size_t size)  //针对new+对象
{
	cout << "new" << endl;
	return newsth(size);
}

你说它递归不递归吧?

寂静的羽夏 | 园豆:2309 (老鸟四级) | 2025-03-17 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top