![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 89
SleepyFancy
pupu
展开
-
C++基础的不能再基础的学习笔记——复合类型
复合类型复合类型是基于其他类型定义的类型。C++中最常用的复合类型是引用和指针。一、引用引用是给对象起的别名,它代表了对象,但它不是一个对象。一般在变量初始化时,初始值会被拷贝到新建的对象中,然而在定义引用时,程序将引用和它的初始值绑定在一起,一旦初始化完成,引用将和它的初始对象一直绑定在一起,无法令引用重新绑定到另一对象,因此引用必须初始化。引用的类型要与绑定的对象类型严原创 2018-01-16 13:29:27 · 198 阅读 · 0 评论 -
C++的55个条款——设计与声明
设计与声明本章主要讲解 C++接口的良好设计与声明条款18:让接口容易被正确使用,不易被误用①想要开发一个“容易被正确使用,不易被误用”的接口,首先必须考虑客户可能做出什么样的错误。比如我们为一个表现日期的类设计一个构造函数。class Date{public: Date(int d,int m,int y):day(d),month(m),year(y...原创 2018-03-30 17:09:18 · 349 阅读 · 0 评论 -
C++的55个条款——资源管理
资源管理所谓资源就是,一旦用了它,将来必须归还给系统。C++程序中最常用的资源就是动态分配内存,但内存只是我们要管理的众多资源之一。其他常见的资源包括:文件描述器、互斥锁、数据库连接、网络socket。接下来我们将学习基于对象的资源管理方法,建立在C++对构造函数、析构函数、copying函数的基础上。当我们严格按照这些条款来做的时候,几乎可以消除资源管理的问题。条款13:以对...原创 2018-03-20 18:08:39 · 426 阅读 · 0 评论 -
C++的55个条款——构造/析构/赋值运算
构造/析构/赋值运算条款05:了解C++默认编写并调用哪些函数什么时候空类不再是一个空类了呢?当C++处理之后就不再是了,编译器会自动为它声明一个编译器版本的默认构造函数、合成拷贝构造函数、合成拷贝赋值运算符、析构函数。只有当这些函数被调用时,才会被编译器创建出来。默认构造函数和析构函数,将调用基类和成员变量的默认构造函数及析构函数。需要注意的是,编译器合成的析构函数不是虚函数,只...原创 2018-03-19 18:07:32 · 176 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——拷贝控制(一)
拷贝控制当定义一个类时,我们显示地或隐式地指定此类型对象 拷贝、移动、赋值和销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作,称为拷贝控制操作。拷贝构造函数:用同类型对象初始化时的操作移动构造函数:用同类型对象初始化时的操作拷贝赋值运算符:用同类型对象赋值时的操作移动赋值运算符:用同类型对象赋值时的操作析构函数:此类型对象销毁时的操作在定义任何C++类时,拷...原创 2018-02-24 20:38:37 · 318 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——面向对象程序设计(一)
面向对象程序设计在很多程序中都存在着一些,相互关联但是有细微差别的概念。例如:书店中不同书籍的定价策略可能不同:有的书籍按照原价卖,有的书籍打折销售,有时我们为购买书籍超过一定数量的顾客打折,有时只对前多少本销售的书籍打折等等。面向对象的程序设计(OOP)适用于这类应用。一、OOP概述面向对象程序设计(OOP)的核心思想是:数据抽象、继承、动态绑定。数据抽象 : 将类的实现和...原创 2018-03-02 15:51:13 · 234 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——拷贝控制示例(二)
拷贝控制示例我们在之前的博客上了解到了,需要管理资源的类通常要定义拷贝控制操作、swap操作。http://blog.csdn.net/fancynece/article/details/79346314但是,①资源管理并不是一个类需要定义自己的拷贝控制成员的唯一原因。一些类需要拷贝控制成员的帮助来进行②簿记工作或其他操作。我们通过一个例子来说明,簿记工作需要拷贝控制成员。定义...原创 2018-02-27 20:47:08 · 212 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——关联容器
关联容器之前我们已经学习了顺序容器:http://blog.csdn.net/fancynece/article/details/79193881而关联容器和顺序容器有着根本的不同:顺序容器中的元素是按元素在容器中的位置顺序保存和访问的,关联容器中的元素是按关键字来保存和访问的。 关联容器类型 元素 按关键字有序保存元素 map 键值...原创 2018-02-14 21:49:32 · 243 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——标准库类型string
string类型string类型表示可变长的字符序列,使用string类型必须引入string头文件。#include using namespace std;一、定义和初始化string对象在字符串字面值中,编译器在每一个字符串字面值的结尾处都加上一个空字符’\0’,例如“fancy”,就变成了”fancy\0”。定义和初始化string对象有许多方式。st原创 2018-01-17 16:10:42 · 247 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——顺序容器(其他操作)
顺序容器顺序容器基本操作:http://blog.csdn.net/fancynece/article/details/79193881我们已经对容器的公有操作和顺序容器的操作有了一定的了解,接下来,我们要进一步学习顺序容器。一、vector、string对象的增长通常情况下,我们不必关心一个标准库类型是如何实现的,但是对于vector和string来说, 部分实现渗透到了接口原创 2018-02-02 20:41:31 · 330 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——类型转换
类型转换一、隐式转换int ival = 3.14 + 3;在执行上述语句时,编译器先将int类型的3转换为double类型,之后相加,再将所得结果转换为int类型初始化ival。显然,这里的类型转换无须程序员的介入,称之为隐式转换。1. 算术转换算数转换就是将一种算术类型(宽度小的)转换为另一种算术类型(宽度大的)。整型提升整型提升负责把 小整数类型 转换成原创 2018-01-26 20:52:02 · 182 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——类(二)
类在上一章中http://blog.csdn.net/fancynece/article/details/79143021, 我们了解了类的一些基础知识,接下来,对类做进一步的探究。一、类成员再探1. 自定义类型别名在类中,我们可以为数据类型定义别名而使代码更清晰简洁。class Screen {public: typedef string::size_原创 2018-01-25 21:57:12 · 261 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——标准库类型vector(基础)
vector类模板vector表示相同对象的集合,每个对象都有一个索引,又成之为容器。vector不是一种类型,而是一个类模板。顾名思义,模板本身不是一个类或函数,但根据提供类型的不同,可以生成不同类型的类或函数,这一过程叫做实例化。因此,在使用vector模板时,我们要给出对象的类型。#include using namespace std;vector a;原创 2018-01-17 17:50:25 · 214 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——顺序容器(基本操作)
顺序容器在前面我们已经了解到,容器就是某类对象的集合。顺序容器 访问元素的顺序与元素加入时的位置相对应,即顺序访问元素,但同时向容器中添加和删除元素、非顺序访问元素都要付出代价。一、顺序容器概述我们所熟悉的vector、deque(双端队列)、list(双向链表)、forword_list(单向链表)、array(固定大小的数组)、string、堆、栈等都是顺序容器。新标准原创 2018-01-31 18:04:55 · 296 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——类(一)
类在C++中,我们用类来定义自己的数据类型。类的基本思想是数据抽象和封装,可以理解为将接口与实现分开,提供给用户可使用的类的接口,但类的具体实现对用户是透明的。class Person {private: string name; unsigned age = 0; bool sex = 0;public: Person() {name = ""原创 2018-01-24 16:53:04 · 231 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——迭代器(基础)
迭代器(iterator )迭代器是对对象的间接访问。并不是所有类型都可以使用迭代器,只有容器可以。因此迭代器的对象为:容器中的元素 or string对象中的字符。有效的迭代器是指 迭代器 指向某个元素 or 指向尾元素的下一位置,其他情况都是无效的。一、迭代器的使用有迭代器的类型 就有 可以返回迭代器的成员,最常见的如begin( )和end( ),begin原创 2018-01-17 19:52:27 · 277 阅读 · 0 评论 -
C++基础的不能再基础的学习笔记——const限定符
const限定符const限定符修饰的变量,只有只读功能,而无法改变值。一、const的特点1.const对象一旦创建不可更改,因此必须初始化。const int bufSize = 512;bufSize = 512; //错误,试图改变值const int i = 12;const int j; //错误,没有赋初值2.默认状态下,const对象只在原创 2018-01-16 19:58:24 · 191 阅读 · 0 评论 -
C++的55个条款——实现
实现大多数情况下,设计类以及函数是花费精力最多的两件事。一旦设计正确,相应的实现大多直截了当。但对于实现,依然有许多需要注意的问题。条款26:尽可能延后变量定义式的出现时间只要我们定义了一个类类型的变量,那么当程序的控制流到达这个变量时,便要承受构造它的成本;当程序的控制流离开这个变量时,便要承受析构它的成本,即使这个变量没有被使用过。我们应该尽量避免这些情况。合理的做法就...原创 2018-04-11 12:30:44 · 503 阅读 · 0 评论