c++ - 使用复制构造函数复制 double 组

标签 c++ arrays copy-constructor

我想为我的类制作复制构造函数,它有一个 double 组作为私有(private)成员\ 我如何编写复制构造函数我已经尝试了以下代码但它导致错误

    class My_class
        {
        private:
            double dp [500];
        public:
            My_class(const My_class & c1)
        {
            //error the following line why i cant use arrayname as a pointer?
            dp =new double[500];
            for(int i=0;i<500;i++)
                *(dp+i)=c1.dp[i];

        }
}

我怎样才能使这个复制构造函数工作?

最佳答案

dp =new double[500];

该代码是多余且错误的。因为您已经有一个成员 dp 作为 double 组。

删除该行,您的构造函数应该可以工作:

            for(int i=0;i<500;++i)
                *(dp+i)=c1.dp[i];

但这也是多余的。因为您的类有一个数组成员(不是指针),所以默认的复制构造函数将为您完成所有工作(即成员复制)。

通常,当你有一个指针成员时,你只需要担心复制构造函数(和复制赋值等)——在这种情况下,默认(编译器生成的)复制构造函数会执行所谓的浅拷贝,这是不正确的,因此您必须创建自己的深层拷贝,或者使用称为移动操作的东西更好。

关于c++ - 使用复制构造函数复制 double 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59016899/

相关文章:

c++ - c&c++默认全局变量链接,多重声明&定义问题

c++ - 测量内存的潜伏期

c++ - STL容器中的value_type有什么用?

c++ - 如何在 Openscenegraph 中从 2D 鼠标单击屏幕坐标点计算 3D 点(世界坐标)?

c - 如何检查索引是否包含符号?

c++ - 拦截 C++ 隐式复制构造函数,或调用其功能

java - 从 JTable 中检索对象

javascript - JQuery Post inside Promise inside every 如何创建数组

c++ - 删除复制构造函数和复制赋值运算符。其中哪些是必不可少的?

c++ - 如何在 Visual C++ 中将只能 move 的对象插入到 map 中?