gpt4 book ai didi

c++ - 为不同的返回值重载 operator new

转载 作者:搜寻专家 更新时间:2023-10-31 00:41:29 25 4
gpt4 key购买 nike

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

最佳答案

没有。

3.7.4.1 分配函数:

... The return type shall be void*. ...

正如 BigBoss 所说,这是因为 new 运算符调用 operator new 并期望它具有特定的返回类型。

关于c++ - 为不同的返回值重载 operator new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com