题解 | #数组类的拷贝构造函数#

数组类的拷贝构造函数

http://www.nowcoder.com/practice/73014020b7d54622ac5000b06eaaa4ef

#include<bits/stdc++.h>
using namespace std;
class Array{
	private:
		int n;//数组大小 
		int *a;//数组 
	public:
		Array(){
			cin>>n;
			a=new int [n];
			for (int i=0;i<n;i++) cin>>a[i];
		}
		~Array(){
			delete []a;
		}
		int getlen(){
			return n;
		}
		int get(int i){
			return a[i];
		}
		// write your code here......
        Array(Array &array) {
            delete[] a;
            n = array.getlen();
            a = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = array.get(i);
            }
        }
		void show(){
			for (int i=0;i<n;i++) cout<<a[i]<<' ';
		}
};
int main(){
	Array a;
	Array b=a; 
	b.show();
	return 0;
}
全部评论
请问这个拷贝构造函数一开始需要delete这个a吗,感觉没必要,初始化时候不是还没new吗这样不就多delete一次吗
3 回复 分享
发布于 2023-03-21 09:07 安徽
建议增加自赋值检查,优化后的代码为: Array(const Array& other):n(other.n) { a = new int [n]; for (int i = 0; i < n; i++) { a[i] = other.a[i]; } } Array& operator=(const Array& other) { if (this != &other) { // 防止自赋值 delete[] a; // 释放原有内存 n = other.n; a = new int[n]; for (int i = 0; i < n; i++) { a[i] = other.a[i]; } } return *this; }
点赞 回复 分享
发布于 11-24 15:58 江苏

相关推荐

10-02 19:29
已编辑
浙江科技大学 运营
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务