c++ 构造器的copy(拷贝), assignment(复制)
来源:互联网 发布:kindle软件下载 编辑:程序博客网 时间:2024/06/06 09:10
1. copy constructor (拷贝构造器)
(1) 拷贝构造器的第一个参数必须是类的引用,其它的参数必须有默认值,如下举例:
class Copy {public: Copy();// default constructor Copy(const Copy&);// copy constructor};
(2) 不同于default constructor (默认构造器)在定义其它构造器之后编译系统不自动生成, copy constructor不管有没有定义其它构造器,都会存在自动生成或者手工定义。
类成员通过成员自己定义的copy constructor进行复制,基本类型成员可以直接复制。
(3) 以下几种类型会使用拷贝构造器
使用=定义变量;
向函数传递一个非引用类型;
返回一个非引用类型;
(4) 定义一个带有拷贝构造函数的类
class HasPtr {public: HasPtr(const std::string &s = std::string()) : ps(new std::string(s)), i(0) { } HasPtr(const HasPtr &hp) : ps(new std::string(*hp.ps)), i(hp.i) { }private: std::string *ps; int i;};
(5) copy assigned operator (拷贝赋值运算符),给上面的类加一个拷贝赋值运算符
class HasPtr {public: HasPtr(const std::string &s = std::string()) : ps(new std::string(s)), i(0) { } HasPtr(const HasPtr &hp) : ps(new std::string(*hp.ps)), i(hp.i) { } HasPtr& operator=(const HasPtr &rhs_hp) { if (this != &rhs_hp) { std::string *temp_ps = new std::string(*rhs_hp.ps); delete ps; ps = temp_ps; i = rhs_hp.i;}return *this; }private: std::string *ps; int i;};
0 0
- c++ 构造器的copy(拷贝), assignment(复制)
- [C++]异常处理中的拷贝构造操作(copy constructor)
- c++-拷贝构造函数(复制构造函数)
- C++类的副本构造器之深复制(拷贝)与浅复制(拷贝)
- 【C++】复制构造函数(拷贝构造函数)和=运算符重载使用的区别
- 拷贝(复制)构造函数
- C++类对象的复制-拷贝构造函数——The c + + class object replication - copy constructor
- 拷贝构造函数(copy constuctor)
- 拷贝构造函数(Copy Constructor)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- 复制构造函数(拷贝构造函数)
- android gradle plugin to version 2.2.2 and gradle to version 2.14.1
- java获取本机的外网ip
- chrome快捷键--chrome 25个最常用的快捷键
- 温故知新-变量定义(PLSQL)
- Javascript闭包(Closure)简化精简版
- c++ 构造器的copy(拷贝), assignment(复制)
- linux Ubuntu常用操作命令
- python json 数据转换
- 定时功能(AlarmManager)
- 199. Binary Tree Right Side View
- 2017.02.14回顾
- SylixOS_x86_PCI串口驱动浅析
- 冒泡排序和插入排序的一点思考
- websocket api