C++入门经典 笔记 (第十四章)高级函数
来源:互联网 发布:linux superuser 编辑:程序博客网 时间:2024/06/01 16:55
在前面的第五章,介绍了如何实现函数的重载:编写多个名称相同但参数不同的函数,同样,对于类中的成员函数,也可以重载。编译器会根据参数的类型和数据决定调用哪个版本。同样,也成员函数一样,用于初始化对象的构造函数也可以重载。一个类可以有两个或多个构造函数,编译器将根据参数的数量和类型选择正确的构造函数。可以重载构造函数,但不能重载析构函数。因为析构函数的签名总是:名称为类名前加~,且不接受任何参数。
复制构造函数
除了提供默认构造函数和析构函数外,编译器还提供一个默认复制构造函数。每当创建对象的备份时,都将调用复制构造函数。按值将对象传入或传出函数时,都将创建对象的一个临时备份。如果对象是用户自己定义的,就将调用相应类的复制构造函数。
所有复制构造函数都接受一个参数:一个引用,它指向所属类的对象。最好将该引用声明为常量,因为复制构造函数不用修改传入的对象,如:
Tricycle (const Tricycle &trike); 在这条语句中,构造函数Tricycle接受一个常量引用,它指向一个现有的Tricycle对象。这个复制构造函数的目标是创建Tricycle对象的备份。
默认构造函数只将作为参数传入的对象的每个成员变量复制都新对象中,这称为浅复制(成员复制)。对于堆内存中的对象,浅复制将一个对象的成员变量的值复制到另一个对象中,这导致两个对象中的指针指向相同的内存地址。而深复制将堆内存中的值复制到新分配的堆内存中。对于浅复制,会出现一种问题,当其中一个对象不在作用域内,将调用对象的析构函数释放内存,而另一个对象仍然指向该内存,这将导致程序出错。解决的办法就是自己定义复制构造函数,并在复制时正确的分配内存。
- C++入门经典 笔记 (第十四章)高级函数
- UNP学习笔记(第十四章 高级I/O函数)
- C#入门经典第十四章
- C++入门经典 笔记 (第九章)高级类
- C++入门经典 笔记 (第十一章)开发高级指针
- UNP卷1:第十四章(高级I/O函数)
- apue学习笔记(第十四章 高级I/O)
- SQL Server 2008编程入门经典笔记(第十四章:事务和锁)
- C++入门经典 笔记(第五章)调用函数
- Javascript高级程序设计第十四章(表单)
- 《C#入门经典》学习笔记(函数)
- C++入门经典 笔记 (第十三章)高级引用和指针
- C++入门经典 笔记 (第十八章)使用高级多态
- Objective-C学习笔记第十四章AppKit
- C++primer 第十四章笔记 初稿
- Javascript高级程序设计第二版第十四章--异常--笔记
- APUE学习笔记——第十四章 高级IO
- (福利)”C++Primer笔记“和”Java经典入门笔记“
- UML类图关系总结
- Struts2基础知识总结
- android-百度地图
- An internal error occurred during: "Launching New_configuration".
- 一个由内存泄漏引发的血案-Square
- C++入门经典 笔记 (第十四章)高级函数
- Win10装机量已经7500万 免费的力量太强大了
- swift 启动页面
- pch文件
- spring data jpa中继承JpaSpecificationExecutor接口的接口不会被IOC容器所管理
- WPF线程同步
- noscript
- SPFA 算法
- 通过金矿模型介绍动态规划