gpt4 book ai didi

c++ - 当 `operator[]' 似乎可以完成这项工作时,为什么需要 'operator double*`

转载 作者:太空狗 更新时间:2023-10-29 20:08:12 26 4
gpt4 key购买 nike

operator[] 似乎是多余的,因为 operator double* 似乎就足够了。

这是我的代码:

struct CStandardData
{
inline operator double* () { return m_standardData; }
//inline double& operator [] (size_t ix) { return m_standardData[ix]; }
size_t m_standardDataRefCnt{ 0 };
double m_standardData[1];
} sd;

我在各种不同的情况下使用 sd,包括 double *a = sdsd[x] = 5.0 sd[x] >= sd[y] 等,无论我是否注释掉或定义了 operator [],代码似乎都能正常工作。

什么情况下需要operator[]

我可能应该添加一些上下文:

我在超过 5000 行的大型代码库中使用了动态分配的内部数据 double sd[]。然后我需要向这个双数组添加分配引用计数,因为需要复制它所在的对象,并将拷贝传递给用户(double sd[] 是 >10000 个元素,所以我不想制作额外的拷贝)。这是我设计的方案,无需修改使用它的大量代码,但不确定省略 operator [] 是否会导致任何问题。

最佳答案

In what situations would it be necessary to have operator []?

在您希望对象充当容器而不是指针的情况下。例如这段代码:

MyContainer cnt;
if( cnt ) // something

如果您定义 operator double * 将会编译,但我不希望这段代码为我的容器编译,因为它没有任何意义。

关于c++ - 当 `operator[]' 似乎可以完成这项工作时,为什么需要 'operator double*`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56315210/

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