[英]overloading new operator in c++
我有一个最适合算法的代码。 我想尝试使用运算符new使用最佳拟合算法。
每次创建对象时,我都应该从已经分配的内存中给它说,
1] 20 2] 12 3] 15 4] 6 5] 23。 最小的量是否适合对象的大小(例如21)
我想针对不同的对象类型执行此操作,因此我需要编写新的重载运算符以成为所有类对象的通用功能。
我可以通过朋友功能来完成此操作,还是有任何可能的方法可以执行。
如果要对程序中的所有类型使用new运算符,只需覆盖全局new运算符:
void* operator new ( std::size_t count );
void* operator new[]( std::size_t count );
void* operator new ( std::size_t count, const std::nothrow_t& );
void* operator new[]( std::size_t count, const std::nothrow_t& );
如果只想对某些班级做,则有两种可能性:
使用新的展示位置运算符:
void* operator new ( std::size_t, void* ptr );
void* operator new[]( std::size_t, void* ptr );
您将必须使用该类型显式使用它,或者可以使用factory或factory方法在堆上创建该类的实例,并将该实现隐藏在内部。
您可以将它用作静态方法来覆盖类的new运算符:
class FooBar {
public:
static void* operator new ( std::size_t count );
static void* operator new[]( std::size_t count );
};
然后,将使用该重载运算符来创建该类的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.