| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> (C++Primer Plus)第十二章 类和动态内存分配笔记 -> 正文阅读 |
|
[C++知识库](C++Primer Plus)第十二章 类和动态内存分配笔记 |
12.1动态内存和类12.1.1一些分析
代码分析:
12.1.2特殊成员函数C++自动提供以下成员函数: 默认构造函数,如果没有定义构造函数 默认析构函数,如果没有定义析构函数 复制构造函数,如果没有定义复制构造函数 赋值运算符,如果没有定义...... 地址运算符,如果没有定义......(this指针) 1.默认构造函数
2.复制构造函数
当函数按值传递或者返回对象或者编译器生成临时对象时都将调用复制构造函数。 (按值传递将调用复制构造函数,所以应该按引用传递对象,这样可以节省调用构造函数的时间以及存储新对象的空间)。 ??? 3.默认的复制构造函数功能:逐个复制非静态成员的值(浅复制) 浅拷贝在析构时出现问题。解决方式:深拷贝。 复制构造函数应当复制字符串并将副本的地址赋给str成员,而不是仅仅复制字符串地址。 ? (我觉得这里出问题是因为str是字符串指针,如果是字符串,那无所谓浅拷贝深拷贝。“核心编程笔记”例子也是,是指针,所以得自己写拷贝构造函数) 4.警告:如果类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,以复制指向的数据,而不是指针。 ?3.赋值运算符StringBad metoo = knot;????? //编译器处理时可能分为:使用可拷贝构造函数创建一个临时对象,然后通过赋值将临时对象赋值到新对象中。 书中由于默认赋值运算符不合适,所以提供赋值运算符定义:
?12.212.2.1静态类成员函数注意: 1.不能通过对象调用静态成员函数;实际上,静态成员函数甚至不能使用this指针。如果静态成员函数是在公有部分声明的,则可以使用类名和作用域解析运算符来调用它。int count = String::Howmany; 2.静态成员函数不与特定对象关联,因此只能使用静态数据成员。 12.3在构造函数中使用new的注意事项
三种方式:
12.4.1返回指向对象(非const对象)的引用两种常见情形:
?12.4.2返回指向const对象的引用使用const引用的常见原因是旨在提高效率。 ?
12.4.3返回const对象?防止返回对象的误用和滥用。 12.4.4返回对象如果被返回的对象是被调用函数中的局部变量,则不应该按引用的方式返回它,可以考虑直接返回对象。 总之:
12.512.5.1new和delete小总结
12.5.2指针和对象小结使用对象指针时,注意: ? ?12.5.3定位new运算符 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 11:28:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |