据我了解,new运算符调用new运算符(其作用类似于malloc),然后调用对象的构造函数(在其类中定义)。因此,按名称运算符new也是运算符。
如果是,那么在重新定义运算符new时(如何使运算符超载)如何更改操作数的数量。在c ++中,不允许更改运算符的操作数(据我所知)。一元运算符不能更改为二进制(例如+不能作为三元运算符重载)
基本上,这是如何工作的?(据我的理解,new操作员应该是一元操作员,如果我错了,请纠正我)
void *operator new(size_t size, char c)
{
void *ptr;
ptr = malloc(size);
if (ptr!=NULL)
*ptr = c;
return ptr;
}
main()
{
char *ch = new('#') char;
}
P.S如果new运算符实际上是一个函数,那么为什么它会作为运算符重载?