如果operator new是一个函数,那么为什么在类中重载它时将其定义为运算符

时间:2019-08-29 20:16:48

标签: c++ operator-overloading

据我了解,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运算符实际上是一个函数,那么为什么它会作为运算符重载?

0 个答案:

没有答案