是否可以重载运算符 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 的实例?现在不要介意安全问题和处理删除,这只是一个简单的简化示例来解释我的问题。