深拷贝和浅拷贝
来源:互联网 发布:做微商最常用的软件 编辑:程序博客网 时间:2024/06/12 01:15
C++对于指针型成员变量有浅拷贝和深拷贝之分
#include <string>#include<iostream>using namespace std;class Person{public: Person(){ cout << "Person()" << endl; } Person(string name, int age) :name(name), age(age) { ptr = new int; } //拷贝构造函数 Person(const Person &p) { cout << "Person(const Person&)" << endl; name = p.name; age = p.age; //p.age++;//只读,不能改 //浅拷贝 //ptr = p.ptr; //深拷贝 int *new_ptr = new int; if (p.ptr != NULL) *new_ptr = *p.ptr; ptr = new_ptr; } void out() { cout << "myname:" << name << endl; cout << "myage:" << age << endl; cout << "*ptr:" << *ptr << endl; cout << "-------------------" << endl; } int *ptr;private: string name; int age;};int main(void){ Person p("zhangsan", 30); *p.ptr = 111; Person p2(p);//1.调用拷贝构造函数方式一 *p2.ptr = 222; p.out(); p2.out(); Person p3 = p;//2.调用拷贝构造函数方式二 *p3.ptr = 333; p.out(); p2.out(); p3.out(); Person p4; p4 = p;//调用赋值构造函数 p4.out(); return 0;}
阅读全文
0 0
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝 和 浅拷贝
- 浅拷贝和深拷贝
- 浅拷贝和深拷贝
- 深拷贝和浅拷贝
- 深拷贝和浅拷贝
- java内存回收机制(笔记)
- Angular 1.2 原理分析
- css3 3D圆周运动
- jquery图片轮播带缩略图
- 数组中出现次数超过一半的数字
- 深拷贝和浅拷贝
- 1.Apache Flume 简介
- hdu 4296 Buildings
- win32学习06.控制台调试
- 聚合支付需要什么证?
- Error:Execution failed for task ':app:greendao'. >
- 我的大学
- GPU Skinning 加速骨骼动画
- Oracle 11g standby主从配置