gpt4 book ai didi

返回对象时清除 C++ 动态数组

转载 作者:行者123 更新时间:2023-11-28 03:43:24 25 4
gpt4 key购买 nike

我目前正在进行一项任务(因此我宁愿不发布完整代码)尝试实现 Bag 抽象数据类型。

下面是我目前正在尝试实现的方法:

template <typename T>
Bag<T> Bag<T>::operator+ (const Bag<T>& bag) {
int sizeofCurrentMultiset = cardinality_;
int sizeofPassedMultiset = bag.cardinality_;
int totalSize = sizeofCurrentMultiset + sizeofPassedMultiset;

Bag<T> newBag(totalSize);

for (int i = 0; i < sizeofCurrentMultiset; i++) {
newBag.insert(array_[i]);
}

for (int i = 0; i < sizeofPassedMultiset; i++) {
newBag.insert(bag.array_[i]);
}

return newBag;
}

我将元素存储为动态数组。

我的问题是,当返回新包时,我可以很好地打印基数(打印到 4,原来的包每个都有两个元素),但是动态数组不包含数字(它打印出一些随机的数字,例如 -1789102)。但是,当我尝试在退回袋子之前打印出元素时,打印出来的效果很好。

毫无疑问,这将是微不足道的事情,但我会很感激你的帮助。

谢谢。

最佳答案

您需要为您的Bag 类编写一个复制构造函数。看起来您正在获取默认构造函数,它只对您的类进行浅拷贝。这就是为什么 cardinality 成员可以,但您的动态数组不行。当您的 operator+ 函数返回 Bag 对象时,将调用复制构造函数。

关于返回对象时清除 C++ 动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430626/

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