gpt4 book ai didi

c++ - 二维数组C++的复制构造函数

转载 作者:行者123 更新时间:2023-11-28 07:15:45 25 4
gpt4 key购买 nike

我已经成功地重载了赋值运算符,所以我确实有一个解决方法,但很高兴知道为什么我无法让它工作。

我的 arr2d 类的开头如下所示:

template <class type> class arr2d {

private:
type* m_ptr;
int m_nx,m_ny;

public:
arr2d(){
m_ptr = 0;
m_nx = 0;
m_ny = 0;
}
// Default constructor creates a null array

arr2d(int nx, int ny):m_nx(nx),m_ny(ny){
m_ptr = new type [nx*ny];
if ( m_ptr==0 ){cout << "\nError allocating heap memory.\n";}
}

// // Copy constructor
// arr2d(const arr2d& rhs){
// m_ptr = new type [m_nx*m_ny];
// for(int j=0;j<m_ny;j++){
// for(int i=0;i<m_nx;i++){
// m_ptr[j*m_nx+i] = rhs.m_ptr[j*m_nx+i];
// }
// }
// }

等等,

您可以在此处看到我尝试的复制构造函数的注释。

现在在我的 main 中,我想调用复制构造函数,例如:

arr2d b=a;

b 数组现在与 a 具有相同的值。我做错了什么?

最佳答案

您的复制构造函数未分配数组大小。应该是这样的

arr2d(const arr2d& rhs) : m_nx(rhs.m_nx), m_ny(rhs.m_ny) {
...
}

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

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