gpt4 book ai didi

C++ 类 : create copy of "this" class within member function

转载 作者:行者123 更新时间:2023-11-28 00:23:14 44 4
gpt4 key购买 nike

我正在尝试为 C++ 类的 += 运算符编写一个函数,它利用了已经编写的 + 运算符函数。到目前为止,我一直未能成功将 this 指针与 + 运算符相关联。这些是我在 g++ 中编译但没有产生预期结果的一些尝试。我曾两次尝试简单地复制 this 类,但这似乎没有用。

intstr& intstr::operator+=(const intstr& i)
{
intstr *a;
a = new intstr;
*a = *this + i;
return *a;
}
intstr& intstr::operator+=(const intstr& i)
{
intstr *a, b(*this);
a = new intstr;
*a = b + i;
return *a;
}
intstr& intstr::operator+=(const intstr& i)
{
intstr *a, *b;
a = new intstr;
b = this;
*a = *b + i;
return *a;
}
intstr& intstr::operator+=(const intstr& i)
{
intstr *a;
a = new intstr;
*a = this->operator+(i);
return *a;
}

在测试代码中,我所做的只是将代码a = a + i的工作行替换为a += i,所以我怀疑问题所在就在那里,但这是可能的。执行此操作的唯一方法是将代码从 + 运算符复制到 += 函数中吗?

最佳答案

通常方法是相反的:你实现operator+=然后你使用那​​个实现实现operator+(创建第一个参数的拷贝,然后使用 += 增加第二个参数并返回)。

除此之外,为什么在所有版本中都调用 new?对于 operator+=,您根本不需要创建任何新对象。运算符应该修改左侧操作数的值,方法是用右侧的值递增它。无需在任何地方创建新对象(使用 new 动态分配的对象更少!)

关于C++ 类 : create copy of "this" class within member function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26417736/

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