gpt4 book ai didi

C++ 交换成员数组和关联指针

转载 作者:行者123 更新时间:2023-11-28 01:57:47 25 4
gpt4 key购买 nike

例如,如果我有一个包含成员数组且两端都有指针的类,

int mArray[5];
int *mStart = mArray;
int *mEnd = mArray + 5;

我交换了那个类,比如在我的标准赋值运算符中使用 std::swap(mArray, other.mArray),这个过程中的指针会发生什么?

这是一个非常人为的例子,但在我的程序中,如果我只交换数组,赋值运算符会按预期工作,如果我尝试交换所有三个成员变量,它就会崩溃。有什么想法吗?

最佳答案

即使您更改存储在 mArray 中的值,该数组仍位于同一地址。所以指针仍然是正确的。

如果将指针值与另一个对象交换,则一个对象中的指针将指向另一个对象的数组。不会很好地工作!

您可以像标准容器那样存储一个指针,而不是存储一个指针,让一个 begin 成员返回一个指向数据的指针/迭代器。

int* begin()
{ return mArray; }

end() 也是如此。

关于C++ 交换成员数组和关联指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40585392/

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