V1062. Class defines a custom new or delete operator. The opposite operator must also be defined.
This diagnostic rule is based on the R.15 CppCoreGuidelines rule.
A class defines a custom 'new' or 'delete' operator but does not define the opposite operator.
Example:
class SomeClass
{
....
void* operator new(size_t s);
....
};
Objects of this class will be dynamically allocated using the overloaded 'new' operator and deleted using the default 'delete' operator.
For symmetry of allocation/deallocation operations, define the 'delete' operator as well:
class SomeClass
{
....
void* operator new(size_t s);
void operator delete(void*);
....
};
You can also mark operators as deleted ('= delete') if for some reason you need to prevent allocation or deallocation of objects of this class.
The following example prevents objects from getting deallocated:
class SomeClass
{
....
void* operator new(size_t s);
void operator delete(void*) = delete;
....
};
You can look at examples of errors detected by the V1062 diagnostic. |