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

标签 c++ arrays pointers swap

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

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/

相关文章:

c++ - Windows下免费商用框架中ViewBox的替换

c++ - 从静态功能问题发出信号

由 sql 行组成的 PHP 数组进行 json_encode

java - 二维 Java 数组。将负数转为零

c - 指向指针的指针数组如何工作?

c++ - 从 cpp 和 hh 文件制作库

C++ meta-splat 函数

无法确定为什么程序的函数将数组返回给主程序

c - 为什么我会出现分段失败?

c - 数组与常量指针一样还是有其他区别?