博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++primer 第13章 复制控制
阅读量:7062 次
发布时间:2019-06-28

本文共 1112 字,大约阅读时间需要 3 分钟。

复制构造函数,赋值操作符,系够函数总称复制控制

能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C++基本功的60%以上!

在这个类中包括了指针类成员变量m_data,当类中包括指针类成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数
这既是对C++程序员的基本要求,也是《Effective C++》中特别强调的条款。
仔细学习这个类,特别注意加注释的得分点和加分点的意义,这样就具备了60%以上的C++基本功!

 

复制构造函数:只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数,可用于:

1.根据另一个同类型的对象显示或隐式初始化一个对象

2.复制一个对象,将它的作为实参传递给一个函数

3.从函数返回时复制一个对象

4.初始化顺序容器中的元素

5.根据元素初始化式列表初始化数组元素

 

C++初始化形式:1.直接初始化【int i(45)】;2.复制初始化:用"="

 

对于类类型对象,只有指定单个实参或显示创建一个临时对象用于复制时,才使用复制初始化

只包含类类型成员或内置类型(但不是指针类型)成员的类,无须显示定义复制构造函数,也可以复制

 

禁止复制:例如IO类不允许复制。1.在private中定义复制构造函数,但是类的友元和成员仍能进行复制; 2.在private中声明复制构造函数

 

重载操作符是一些函数,其名字为operator后跟着所定义的操作符的符号。

 

一般复制构造函数,也跟着复制操作符

Sales_item& Sales_item::operator=(const Sales_item &rhs){   isbn= rhs.isbn;units_sold =rhs.units_sold;return *this;}

 

析构函数

 动态分配的对象只有在指向该对象的指针被删除时才撤销,若没删除指向动态对象的指针,则不会运行该对象的析构函数。

当对象的引用或者指针超出作用域时,不会运行析构函数。只有在删除指向动态分配对象的指针实际对象(而不是对象的引用)超出作用域时,才会运行析构函数

如果一个类需要析构函数,那它也需要赋值操作符和复制构造函数 --》三法则

class Sales_item{public:      //      //     ~Sales_item(){}};

类的析构函数是成员函数,他的名字是在类名字之前加上一个~,无形参,无返回值

 

转载于:https://www.cnblogs.com/nkxyf/archive/2012/05/22/2512232.html

你可能感兴趣的文章
内部存储到外部存储
查看>>
SSH注解整合
查看>>
爬取全部的校园新闻
查看>>
开通自己的github
查看>>
共轭方向法、共轭梯度法
查看>>
余数专题
查看>>
洛谷2764:[网络流24题]最小路径覆盖问题——题解
查看>>
Spring Data JPA在Spring Boot中的应用
查看>>
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
查看>>
使用WebClient 或者 HttpWebRequest均报:"The Remote name can't be solved"
查看>>
hibernate---一对一单向外键关联--XML
查看>>
用openssl生成含有中文信息的证书
查看>>
常用开源框架中设计模式使用分析
查看>>
DotNetTextBoxV6.0.2在线编辑器控件(For Asp.net2.0/3.0/3.5)免费版发布!
查看>>
J - Joyful -数学期望
查看>>
作业类型维护流程(CO)
查看>>
图论算法----网络流
查看>>
【Unity Shaders】ShadowGun系列之二——雾和体积光
查看>>
面向对象第四次博客
查看>>
【BZOJ4870】组合数问题 [矩阵乘法][DP]
查看>>