Files
XCEngine/docs/api/containers/array/copy-move-constructor.md

45 lines
1.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Array::Array() - 拷贝/移动构造
```cpp
Array(const Array& other);
Array(Array&& other) noexcept;
```
拷贝或移动构造一个新数组。
**拷贝构造:**
- 分配与 `other` 相同容量的内存
- 拷贝 `other` 中所有元素
**移动构造:**
- 接管 `other` 的所有资源(数据指针、容量、大小)
-`other` 置为空状态(`m_data = nullptr, m_size = 0, m_capacity = 0`
- 不拷贝、不移动任何元素数据,性能 O(1)
**参数:**
- `other` - 源数组
**异常:**
- 拷贝构造:元素拷贝可能抛出异常
- 移动构造:`noexcept`,不抛出异常
**线程安全:** ❌ 构造期间不可并发访问
**示例:**
```cpp
XCEngine::Containers::Array<int> arr1 = {1, 2, 3};
// 拷贝构造
XCEngine::Containers::Array<int> arr2(arr1); // arr2 = {1, 2, 3}
// 移动构造
XCEngine::Containers::Array<int> arr3(std::move(arr1));
// arr3 = {1, 2, 3}
// arr1 现在为空Size() == 0
```
## 相关文档
- [Array 总览](array.md) - 返回类总览