自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 C++primer学习笔记-----7.1定义抽象数据类型

【累的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术;封装实现了类的接口和实现的分离。】【对于非抽象数据类型来说,其用户直接访问它的数据成员并编写自己所需的操作是允许的;要想把它变成抽象数据类型,我们需要定义一些操作以供它的用户使用,一旦它定义了自己的操作,我们就可以封装(隐藏)它的数据成员了。】7.1.1 设计Sales_data 类

2017-05-25 08:14:39 324

原创 C++primer学习笔记-----6.7函数指针

【函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。bool lengthCompare(const string &, const string &); // 该函数的类型是bool(cosnt string &, const string &)bool (*pf)(const string &, const st

2017-05-17 16:48:31 271

原创 C++primer学习笔记-----6.6函数匹配

【确定候选函数和可行函数:函数匹配的第一步是选定本次调用对应的重载函数集,集合中的函数称为候选函数。候选函数具备两个特征:一是与被调用的函数同名,二是其声明在调用点可见;第二步考查本次调用提供的实参,然后从候选函数中选出能被这组实参调用的函数,这些新选出的函数称为可行函数。可行函数也有两个特征:一是其可接受的实参数量与本次调用提供的实参数量相等,二是每个实参的类型与对应的形参类型相同,或能

2017-05-17 08:12:39 274

原创 C++primer学习笔记-----6.5特殊用途语言特性

6.5.1 默认实参【某些函数有这样一些实参:在函数的大多数调用情况下它们都被赋予相同的值,但在某些少数特定情况下,它们也需要被赋予其它的值。我们可以把这样特点的函数输入定义为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。】【含有默认实参的函数定义代码如下:typedef string::size_type sz; // 和默认实参无关

2017-05-15 16:33:47 225

原创 C++primer学习笔记-----6.4函数重载

【如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。函数重载通常用于逻辑功能相同,但处理对象类型不同的函数,以此减轻程序员记名字的压力。】【重载和const 形参:顶层const 不影响传入函数的对象(也可以从左值当右值用考虑)。一个拥有顶层const 的形参无法和另一个没有顶层const 的形参区分开来。另一方面,如果形参的const 是底层的,则通过

2017-05-10 08:13:33 259

原创 C++primer学习笔记-----6.3返回类型和return 语句

【return 语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。return 有两种形式:return;return expression;】6.3.1 无返回值函数【没有返回值的return 语句只能用在返回类型是void 的函数中。返回void 的函数不要求非得有return 语句,因为这类函数的最后一句后面会隐式的执行return。】

2017-05-09 16:14:59 258

原创 C++primer学习笔记-----6.2参数传递

6.2.1 传值函数【熟悉C 的程序员常常使用指针类型的形参访问函数外部的对象。在C++ 语言中,建议使用引用类型的形参替代指针。】6.2.2 传引用函数【正如在学习引用时介绍过的,使用引用可以避免拷贝以节省时间和空间。甚至有的类型根本不支持拷贝。同样,当函数无需修改引用形参的值时最好使用常量引用,其性能要由于使用值传递的普通形参。】【使用引用形

2017-05-08 16:56:49 203

原创 C++primer学习笔记-----6.1函数基础

【实参是形参的初始值,用于调用函数时初始化形参。实参与形参的类型和数量必须一一对应,但是C++ 语言并未对实参的求职顺序做出规定。】【函数的形参列表可以为空,但是不能省略。定义一个不带形参的函数,最常用的办法是书写一个空的形参列表。】【形参一般都应该有个名字。偶尔,函数确实有个别形参不会被用到,此类形参通常不命名以表示在函数体内不会使用它。不管怎样,即使某个形参

2017-05-07 13:06:17 287

原创 C++primer学习笔记-----5.4~5.5

5.4 迭代语句【迭代语句通常称为循环。while 和for 语句在执行循环体之前检查条件,do while 语句先执行循环体,然后再检查条件。】5.4.2 传统的for 语句【for 循环的语法形式:for (init-statement; condition; expression) statement】【和其他的声明一样,init-

2017-05-03 08:15:31 202

原创 C++primer学习笔记-----5.3条件语句

【C++ 语言提供了两种按条件执行的语句。一种是if 语句,它根据条件决定控制流;另一种是switch 语句,它计算一个整形表达式的值,然后根据这个值从几条执行路径中选择一条。】5.3.1 条件语句【悬垂else:当一个if 语句嵌套在另一个if 语句内部时,可能if 分支的数量多于else 分支,这时候if 与else 如何进行匹配。就C++ 而言,它规定else

2017-05-02 16:56:01 189

原创 C++primer学习笔记-----5.1~5.2

5.1 简单语句【如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。一种常见的情况是,当循环的全部工作在条件部分就可以完成时,我们通常会用到空语句。使用空语句时应该加上注释,从而令读这段代码的人知道该语句是有意省略的。】【复合语句是指用花括号括起来的(可能为空的)语句和声明的序列,复合语句也被称作块。一个块就是一个作用域。如果在程序的

2017-05-02 08:00:02 189

原创 C++primer学习笔记-----4.11类型转换

【何时发生隐式转换(编译器自动地转换运算对象的类型):在大多数表达式中,比int 类型小的整型值首先提升为较大的整数类型;在条件中,非布尔值转换成布尔类型;初始化过程中,初始值转换成变量的类型,在赋值语句中,右侧运算对象转换成左侧运算对象的类型;如果算数运算或关系运算的运算对象有多种类型,需要转换成同一种类型;函数调用有时也会发生类型转换。】4.11.1 算数转换

2017-04-28 08:04:01 230

原创 C++primer学习笔记-----4.9~4.10

4.9 sizeof 运算符【sizeof 运算符满足右结合律,其所得的值是一个size_t 类型的常量表达式(可用于创建数组)。sizeof 有两种使用形式:sizeof (type)sizeof expr // 在这种使用方式中,sizeof 并不实际计算其运算对象的值】【对引用类型执行sizeof 运算得到被引用对象所占空间的大小;对解引用指针执行sizeo

2017-04-25 17:21:54 447

原创 C++primer学习笔记-----4.8位运算符

【位运算符(优先级由上到下递减)(左结合律):~expr // 位求反expr1 << expr2 // 左移,返回左侧值的二进制形式左移右侧个位的拷贝(右移同理)expr1 & expr2 // 位与,对应位依次进行相与运算,并返回运算结果。与(&&)注意区分expr1 ^ expr2 // 位异或,对应位依次进行异或运算(异1同0),并返回运算结果expr1 | expr2 // 位或

2017-04-25 17:05:50 272

原创 C++primer学习笔记-----4.5~4.7

4.5 递增和递减运算符【递增运算符(++) 和递减运算符(--) 为对象的加1 和减1 操作提供了一种简洁的书写形式。这两个运算符还可应用于迭代器,因为很多迭代器本身不支持算数运算,所以此时递增和递减运算符除了书写简洁外还是必须的。】【除非必须,否则不用递增递减运算符的后置版本;形如*ptr++ 的表达式一开始可能不太容易理解,但其实这是一种被广泛使用的、有效的写

2017-04-25 08:00:55 272

原创 C++primer学习笔记-----4.4赋值运算符

【赋值运算符的左侧运算对象必须是一个可修改的左值。赋值运算的结果是它的左侧运算对象,并且是一个左值。相应的,结果的类型就是左侧运算对象的类型。赋值运算满足右结合律:int ival, jval;ival = jval = 0;】【赋值运算符优先级较低:赋值语句经常会出现在条件当中。因为复制运算的优先级相对较低,所以通常需要给赋值部分加上括号使其符合我们的原意。int i

2017-04-24 17:00:28 219

原创 C++primer学习笔记-----4.3逻辑和关系运算符

【逻辑和关系运算符(优先级由上到下降低):逻辑非运算符(!);大于小于(, >=);等于不等于(==, !=);逻辑与(&&);逻辑或(||)。】【逻辑运算符和关系运算符的返回值都是布尔类型:if(i < j < k) if(i < j && j < k)// 体会两个语句的区别,一般不要连写几个关系运算符对于这两类运算符来说,运算对象和求值结果都是右值。】

2017-04-24 16:49:40 172

原创 C++primer学习笔记-----4.2算数运算符

【算术运算符(优先级由上到下依次降低,左结合律):一元正号(+)、一元负号(-);乘法(*)、除法(/)、求余(%);加法(+)、减法(-)。】【算数运算符都能作用于任意算数类型,以及任意能转换为算数类型的类型。算数运算符的运算对象和求值结果都是右值。在表达式求值之前,小整数类型的运算对象被提升成较大的整数类型,所有运算对象最终会转换成同一类型。(解释了下段代码的结果)

2017-04-20 17:16:03 327

原创 C++primer学习笔记-----4.1基础

4.1.1 基本概念【C++ 定义了作用于不同数量运算对象的一元运算符和二元运算符,此外还有一个作用于三个运算对象的三元运算符,函数调用也是一种特殊的运算符,它对运算对象的数量没有限制。】【当运算符作用于类类型的运算对象时,用户可以自行定义其含义。因为这种自定义的过程事实上是为已存在的运算符赋予了另外一层含义,所以称之为重载运算符。我们使用重载运算符时,其包括运算对象的

2017-04-20 16:21:00 167

原创 C++primer学习笔记-----3.6多维数组

严格来说,C++ 语言中没有多维数组,通常所说的多维数组其实是数组的数组(尽量不要当成一维数组理解,虽然可能存储结构是如此实现的)。多维数组的声明语句可以按照由内到外的阅读顺序来理解其实际含义。对于二维数组来说,常把第一个维度称为行,第二个维度称为列。【多维数组的初始化:允许使用花括号括起来的一组值初始化多维数组,这点和普通的数组一样。下面的初始化形式中,多维数组的每一行分

2017-04-18 16:40:42 258

原创 c++primer学习笔记-----3.5数组

数组是一种类似于标准库类型vector 的数据结构。与vector 不同的地方是,数组的大小确定不变,不能随意向数组中增加元素。因为数组的大小固定,因此对某些特殊的应用来说程序的运行时性能较好,但是相应地也损失了一些灵活性。{本章内容早有接触,笔记较为随意}3.5.1 定义和初始化内置数组【数组是一种复合类型。数组的声明形如a[d],其中a 是数组的名字,b 是数组的维

2017-04-17 14:57:37 223

原创 c++primer学习笔记-----3.4迭代器介绍

我们已经知道可以使用下标运算符来访问string 对象的字符或vector 对象的元素,还有另外一种更通用的机制也可以实现同样的目的,这就是迭代器。在第二部分中将要介绍,除了vector 以外,标准库还定义了其他几种容器。所有标准库容器都可以使用迭代器,但是只有少数几种才同时支持下标运算符。(严格来讲,string 对象不属于容器,但是string 对象支持很多与容器类型类似地操作)迭代器

2017-04-13 16:29:52 333

原创 c++primer学习笔记-----3.3标准库类型vector

标准库类型vector 表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引(下标),索引用于访问对象。它又被称为容器,第二部分将对容器进行更为详细的介绍。要想使用vector,需要头文件 和using std::vector 声明。c++ 语言即有类模板,也有函数模板,vector 即是一个类模板。模板本身不是类或函数,相反可以看作为了编译器生成类或函数编写的说明

2017-04-12 20:22:23 345

原创 Visual studio 中的中文字符

char a1, a2;a1 = -70;a2 = -61;cout 【中文字符在VS 中是以GBK 的编码方式编码的,每个文字占两个字节。】【如果想用char 存储中文,每个中文需要两个char 变量,输出时也要连续输出两个char 变量才能输出中文。】【中文文字存储的两个字节中,每个字节的机械码开头一位都是1(英文和数字等为0)。】

2017-04-08 14:56:16 1441

原创 c++primer学习笔记-----3.2标准库类型string

标准库类型string 表示可变长的字符序列,使用string 类型必须首先包含string 头文件。本节描述最常用的string 操作,9.5 节还将介绍另外一些。3.2.1 定义和初始化string 对象【如何初始化类的对象是由类本身决定的。string s1 // 默认初始化,s1 是一个空串string s2(s1) // s2 是s1 的副本strin

2017-04-07 15:39:44 371

原创 c++primer学习笔记-----3.1命名空间的using 声明

【命名空间是用来组织和重用代码的。因为人类可用的单词数太少,并且不同的人写的程序可能有的变量有重名现象。引入了命名空间这个概念解决这一问题。】【在c 语言的使用传统中,比如使用的iostream.h 这一头文件中,使用的名字具有全局作用域。而在新标准的c++ 语言中,为了防止名字之间互相污染,规定使用库文件iostream(不带.h),使用的名字不具全局作用域,要在程序中使用的话必

2017-04-05 21:01:24 302

原创 c++primer学习笔记-----2.6自定义数据结构

{这一节内容因为在之前学C时接触过,所以掌握得不错} 2.6.1 定义Sales_data 类型(新标准){本节介绍仅含数据成员的类的定义方法} 【定义类以关键字struct 开始,紧跟着类名和类体(类体可以为空)类体由一对花括号包围形成一个新的作用域类内部定义的名字必须唯一,但是可以与类外部定义的名字重复(使用时屏蔽掉外部的重名)】 【类体右侧的表示结束的花括

2017-03-22 15:46:49 414

原创 c++primer学习笔记-----2.5处理类型

随着程序越来越复杂,程序中用到的类型也越来越复杂,这种复杂性体现在两个方面:第一,  一些类型难于“拼写”,有时其名字难于体现其构造目的和含义;第二,  有时候根本搞不清所需的是哪种类型。 2.5.1 类型别名(新标准) 【类型别名是一个名字,它是某种类型的同义词,有两种方法可以定义类型别名】 【传统的方法是使用关键字typedef,关键字typedef 作为声明语

2017-03-22 15:43:55 663

原创 c++primer学习笔记-----2.4const限定符

const 限定符的核心价值就是防止误操作改变了不须改变的变量的值const 对象一旦创建后就不能发生任何改变,因此必须在定义的同时进行初始化(字面值、任意表达式均可)const 对象的文件间共享:【声明与定义的设置是为了在不同文件间使用同一个变量,当然只在该变量确实会改变的情况下才有意义而如果要在不用文件间分享确定不会改变的const 对象,则无须在各文件间传递const 的值

2017-03-17 18:11:36 436

原创 c++primer学习笔记-----2.3复合类型

复合类型是指基于其他类型定义的类型;一条声明语句由一个基本数据类型和紧随其后的一个声明符列表组成2.3.1 引用【使用格式:int i = 0;int &a = i;//a 为对整形对象i 的引用】【引用为对象起了另外一个名字,引用类型引用另外一种类型引用并非对象,它只是为一个已经存在的对象所起的另外一个名字,所以不能定义引用的引用】【定义引用时,程序把引用和

2017-03-17 17:21:25 306

原创 c++primer学习笔记-----2.2变量

变量提供一个具名的、可供程序员操作的存储空间;变量的数据类型决定着变量所占空间的大小、布局方式及变量能参与的运算2.2.1 变量定义【在c++ 语言中,初始化和赋值是两个完全不同的操作(所以有些数据类型必须在定义的同时初始化,如引用类型和常量类型)】【初始化有多种形式int a = 0;int a = {0};int a{0};int a(0);用花括号来初始化变量称

2017-03-15 16:55:59 253

原创 C++primer学习笔记-----2.1基本内置类型

2.1.1 算术类型【char(8位)可以存放机器基本字符集中任意字符对应的数字值wchar_t(16位)可以存放机器最大扩展字符集的所有字符char16_t和char32_t(16及32位)为Unicode字符集服务(用于表示所有自然语言中字符的标准)】【int、short、long、long long 前加unsigned 可以变为无符号类型,其中unsigned in

2017-03-15 16:20:28 249

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除