文章概述
浅拷贝和深拷贝
class Test { private: int* p; public: Test(int x) { this->p=new int(x); cout << "对象被创建" << endl; } ~Test() { if (p != NULL) { delete p; } cout << "对象被释放" << endl; } int getX() { return *p; } }; int main() { Test a(10); //会调用默认的拷贝构造函数 Test b = a; return 0; }
class Test { private: int* p; public: Test(int x) { this->p=new int(x); cout << "对象被创建" << endl; } ~Test() { if (p != NULL) { delete p; } cout << "对象被释放" << endl; } int getX() { return *p; } //深拷贝(拷贝构造函数) Test(const Test& a) { this->p = new int(*a.p); cout << "对象被创建" << endl; } //浅拷贝(拷贝构造函数) //Test(const Test& a) //{
// this->p = a.p; // cout << "对象被创建" << endl; //} }; int main() { Test a(10); //我们手动的写拷贝构造函数,C++编译器会调用我们手动写的 Test b = a; return 0; }
总结: 浅拷贝会把指针变量的地址复制; 深拷贝会重新开辟内存空间。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225235.html原文链接:https://javaforall.net
