c++ - 复制构造函数中的 std::copy 出错

标签 c++ pointers copy copy-constructor

我正在编写自己的 vector 类,只是为了了解内存管理的工作原理。我调用 std::copy 的类中唯一的位置是在复制构造函数中。

vector::vector(const vector& v)
        :sz{v.sz}, space{v.space}, elem{new double[sz]}
    {
        copy(v.elem, v.elem + v.sz, elem);
    }

其中 sz(int) 是 vector 的大小,space(int) 是为 vector 保留的内存,elem(double*) 是指向元素的指针。

当我调用 std::copy 时,出现以下错误。

Error   C4996   'std::_Copy_impl': Function call with parameters that may be
unsafe - this call relies on the caller to check that the passed values are  
correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See  
documentation on how to use Visual C++ 'Checked Iterators'  Project2    
c:\program files (x86)\microsoft visual studio 14.0\vc\include\xutility 2230

我是不是错过了什么,因为我没有传递正确的参数?

最佳答案

代码是正确的。显然你正在使用一些时髦的编译器选项将警告变成错误。警告是说 copy 的实现无法检查它是否没有复制到目标数组的末尾。但是调用代码(你的复制构造函数)已经检查过了,所以调用没有问题。

关于c++ - 复制构造函数中的 std::copy 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34170532/

相关文章:

c - 将二维数组传递给常量参数的函数

iphone - NSFileManager 在应用程序委托(delegate)中崩溃

c++ - 控制 `T` 绑定(bind)什么样的引用

c++ - TreeView 中的多色文本(Embarcadero RAD 工作室)

引用数组中对象的 C++ 共享指针

c - 如何将数组的元素依次插入到另一个数组中?

api - HTTP:在 Destination header 不是 URI 的情况下使用 COPY 方法是否可以接受?

Delphi:从具有总体进度的文件夹中复制文件。复制文件Ex?

c++ - 模板接受 const 但不接受文字

c++ - 复制平凡可复制的对象是否总是在 C++14 中定义?