IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 第12章笔记 -> 正文阅读

[C++知识库]C++ Primer Plus 第12章笔记

第12章 类和动态内存分配

12.1 动态内存和类

静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域运算符来指出静态成员所属的类。但如果静态成员是整型或枚举型const,则可以在类声明中初始化。

在类设计时,C++将会自动提供1.默认构造函数,2.默认析构函数,3.复制构造函数,4.复制构造函数,5.地址运算符,如用户自行定义了以上函数,则编译器不再提供默认函数。

复制构造函数用于将一个对象复制发到新创建的对象中
原型:Class_name(const Class_name &);

当函数按值传递对象或函数返回对象时,都将使用复制构造函数。

默认的复制构造函数逐个复制非静态成员(成员复制也称为浅复制),复制的是成员的值。

赋值运算符:Class_name & Class_name::operator=(const Class_name);
将已有的对象赋给另一个对象时,将使用重载的赎值运算符。
初始化对象时,并不一定会使用赋值运算符。
赋值运算符的隐式实现也对成员进行逐个复制。

C++11空指针:(void*)、0、NULL、nullptr。

12.2 改进后的新String类

不能通过对象调用静态成员函数。
静态成员函数可以使用类名和作用域解析运算符来调用它。
静态成员函数只能使用静态数据成员。

12.3 在构造函数中使用new时应注意的事项

  • 如果有多个构造函数,则必须以相同的方式使用new。
  • 应定义一个复制构造函数,通过深度复制将一个对象初始化为另一个对象。
  • 应当定义一个赋值运算符,通过深度复制将一个对象复制给另一个对象。

较早的get(char *,int)版本在读取空行后,返回的值不为false。

12.4 有关返回对象的说明

如果方法或函数要返回局部对象则应返回对象,而不是指向对象的引用。在这种情况下,将使用复制构造函数来生成返回的对象。如果方法或函数要返回一个没有公有复制构造函数的类(如ostream类)的对象,它必须返回一个指向这种对象的引用。最后,有些方法和函数(如重载的赋值运算符)可以返回对象,也可以返回指向对象的引用,在这种情况下,应首选引用,因为其效率更高。

12.5 使用指向对象的指针

使用定位new运算符从使用的缓区内存分配对象时,需要提供两个位于缓冲区的不同地址,需要显式调用析构函数。

12.7 队列模拟

在类中嵌套结构或类声明,可以使其作用域为整个类。如果声明是在公有部分进行的,则可以从类的外部通过作用域解析运算符使用被声明的类型。

成员初始化列表由逗号分隔的初始化列表组成(前面带帽号)。它位于参数列表的右括号之后、函数体左括号之前。

Queue::Queue(int qs) : qsize(qs)
{
    front = rear = NULL; items = 0;
}

对于const类成员和引用,必须使用这种语法。

这种格式只能用于构造函数。

C++11允许直接在类中初始化。

如果不希望默认提供的函数被使用,可以定义为私有方法。

值RAND_MAX是在cstdlib文件(stdlib.h)中定义的,是rand()函数可能返回的最大值(0是最小值)。

rand()*x/RAND_MAX的值将位于0到x之间。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:38:43  更:2022-02-06 13:39:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:56:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码