是否可以重载运算符 new() 以获得与 void* 不同的返回值?
我有两个结构:
一个结构 (A) 仅保存数据,不保存其他内容。
第二个结构 (B) 的作用类似于指向第一个结构的指针:
struct A;
struct B
{
private:
A* ptr;
public:
A& operator*() { return (*ptr); };
A& operator->() { return (*ptr); };
};
struct A
{
int data;
B operator&() { B ret; ret.ptr = this; return ret; };
};
这个想法就这么简单。 我不希望任何外部类处理指向 A 的指针,而不是直接处理。
但是,我确实希望他们能够创建 A 的实例。有没有办法覆盖 A 的 new 运算符以返回 B 的实例?现在不用担心安全问题和处理删除,这只是一个简单的简化示例来解释我的问题。
最佳答案
没有。
3.7.4.1 分配函数:
... The return type shall be
void*
. ...
正如 BigBoss 所说,这是因为 new
运算符调用 operator new
并期望它具有特定的返回类型。
关于c++ - 重载运算符 new 以获取不同的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145427/