随笔分类 -  C++ Primer 读书笔记

C++ Primer的个人总结
C++ Primer 第十六章 模板与范型编程
摘要:16.1 模板定义 模板和c#范型一样,建立一个通用的类或函数,其参数类型和返回类型不具体指定,用一个虚拟的类型来代表,通过模板化函数或类实现代码在的重用。 定义语法是: template<typename 类型参数> 返回类型 函数名(模板形参表) { 函数体 } 或: template<class 类型参数> 返回类型 函数名(模板形参表) { 函数体 } template是一个声明模板的关键字,类型参数一般用T这样的标识符来代表一个虚拟的类型,当使用函数模板时,会将类型参数具体化。typename和class关键字作用都是用来表示它们之后的参数是一个类型的... 阅读全文
posted @ 2012-05-23 16:14 老金 阅读(2301) 评论(0) 推荐(0)
C++ Primer 第十五章 面向对象编程
摘要:15.1 面向对象编程:概述继承: 虚函数:virtual 动态绑定:15.2 定义基类和派生类 成员限制符:public private protected protected:在子类中可访问,派生类内部可以访问本类对象protected成员,不能访问基类对象protected成员classbase{protected:stringname;};classitem:publicbase{voidtest(item&a,base&b){a.name;//可以访问本类对象protected成员b.name;//错误,不能访问基类对象protected成员}} C++允许多重继承, 阅读全文
posted @ 2012-05-22 15:14 老金 阅读(1426) 评论(0) 推荐(0)
C++ Primer 第十四章 重载操作符与转换
摘要:14.1 重载操作符的定义 操作符(+ ,- , * , / , = , < , >)可以被内置类型使用,比如两个整数相加或相减,两个字符串相加,两个数组比较大小等等。自定义类默认是不能使用大多数操作符的。自定义类是复合类型,相加或想减或比较大小并没有相应的规则匹配:两个类相加等于什么? 两个类如何 阅读全文
posted @ 2012-05-16 11:51 老金 阅读(1281) 评论(0) 推荐(1)
C++ Primer 第十三章 复制控制
摘要:复制构造函数、赋值操作符和析构函数总称为复制控制。编译器自动实现这些操作,但类也可以定义自己的版本。 复制构造函数是一种特殊构造函数,具有单个形参,该形参(常用 const 修饰)是对该类类型的引用。 析构函数是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。不管类是否定义了自己的析构函数,编译器都会自动为类中非 static 数据成员执行析构函数。 赋值操作符与构造函数一样,赋值操作符可以通过指定不同类型的右操作数而重载。右操作数为类类型的版本比较特殊:如果我们没有编写这种版本,编译器将为我们合成一个。class myclass{ public: mycla.. 阅读全文
posted @ 2012-05-15 14:54 老金 阅读(1115) 评论(0) 推荐(0)
C++ Primer 第十二章 类
摘要:简单地说,类就是定义了一个新的类型和一个新作用域。12.1 类的定义和声明 类由类成员组成。类成员包括属性,字段,成员函数,构造函数,析构函数等组成。 类设计应该遵从抽象封装性。 类抽象性指对于类的使用者来说只需知道类接口即可使用类功能。类的具体实现由设计者负责。即使某个功能发生了变更但由于使用者是以接口方式调用类所以用户代码无需做任何修改。 类封装性指类用户只需知道类的功能无需了解具体实现。实现代码对用户来说不可见。 C++类没有访问级别限限制,定义类时不能用public 或private 做修饰。类成员有访问级别,可以定义 public protect privateclassScre.. 阅读全文
posted @ 2012-05-14 17:11 老金 阅读(1399) 评论(0) 推荐(0)
C++ Primer 第十一章 范型算法
摘要:标准库提供的 find 运算:vector<int>::const_iterator result =find(vec.begin(), vec.end(), search_value);只要找到与给定值相等的元素,find 就会返回指向该元素的迭代器。如果没有匹配的元素,find 就返回它的第二个迭代器实参,表示查找失败。由于 find 运算是基于迭代器的,因此可在任意容器中使用相同的 find 函数查找值。类似地,由于指针的行为与作用在内置数组上的迭代器一样,因此也可以使用 find 来搜索数组:int ia[6] = {27, 210, 12, 47, 109, 83};in 阅读全文
posted @ 2012-05-14 11:28 老金 阅读(1098) 评论(2) 推荐(0)
C++ Primer 第十章 关联容器
摘要:关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 关联容器(Associative containers)支持通过键来高效地查找和读取元素。两个基本的关联容器类型是 map 和 set。 map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据。set 仅包含一个键,并有效地支持关于某个键是否存在的查询。 关联容器类型 map ... 阅读全文
posted @ 2012-05-11 15:05 老金 阅读(6160) 评论(0) 推荐(0)
C++ Primer 第九章 顺序容器
摘要:标准库定义了三种顺序容器类型:vector、list 和 deque(是双端队列“double-ended queue”的简写,发音为“deck”)。 它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。 标准库还提供了三种容器适配器(adaptors)。 实际上,适配器是根据原始的 阅读全文
posted @ 2012-05-10 17:04 老金 阅读(2423) 评论(0) 推荐(0)
C++ Primer 第八章 标准IO库
摘要:学习本章内容之前有必要对缓冲区的概念做一个基本了解,我引用了网上一片文章《C++编程对缓冲区的理解》,内容如下: 什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大... 阅读全文
posted @ 2012-05-09 15:19 老金 阅读(7458) 评论(3) 推荐(3)
C++ Primer 第七章 函数
摘要:7.1 函数的定义函数是完整的一个逻辑代码块。 函数接收一些参数并在函数体内做处理。函数可以返回运算结果也可能不返回任何内容。 C++有两类函数 无返回值的void函数 和 有返回值函数。7.2 参数传递 Ø非引用形参参数是以复制形式传递的,函数内部对参数修改不一会对调用函数的实参产生影响。看下面代码voidfunct(inti,strings){i=3;s="new";}intit=2;stringstr="old";cout<<it<<str<<endl;//输出:2oldfunct(it,str);co 阅读全文
posted @ 2012-05-07 18:53 老金 阅读(1162) 评论(0) 推荐(1)
C++ Primer 第六章 语句
摘要:本章内容比较简单,不作过多说明。如果学习过任意一门编程语言可以跳过本章。 阅读全文
posted @ 2012-05-07 17:46 老金 阅读(596) 评论(0) 推荐(0)
C++ Primer 第五章 表达式
摘要:本章内容比较简单,只做部分说明1.箭头操作: c++ 中箭头操作是个复合操作,将解引和调用组合调用了 myclass clsobj ; myclass *cls = &clsobj ; cls->show() ; // 等价于(*cls).show()2. sizeof操作 返回一个对象或类型名的长度,这个操作比较重要,可以查看这篇文章3. new和delete new和delete运算符用于动态分配和撤销内存的运算符 Ønew用法: 开辟单变量地址空间int *a = new int ; // 开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.(和对象初始化一 阅读全文
posted @ 2012-05-04 18:20 老金 阅读(760) 评论(0) 推荐(1)
C++ Primer 第四章 数组与指针
摘要:4.1 数组 数组是同一类数据的集合。数组的特点是 以顺序结构结构存储,一点定义就无法更改数组大小。 数组定义很简单: int a[2] ; // 定义了一个能容纳两个int类型数据的数组 const int sz = 2 ; myclass ls[sz] ; 定义数组的时候系统可能会自动初始化数组的每个项目,但也可以显示提供值。int a[3] {1,2,3} ; 可以既指定数组大小又提供初始化列表,此时列表内元素数不能大于维数; 如果列表提供元素小于维数则从数组第一个元素开始显示初始化,没有提供的数组元素会自动初始化步。 自动初始化遵从下面规则: Ø对内置类型来说: int a[ 阅读全文
posted @ 2012-05-04 16:44 老金 阅读(1112) 评论(0) 推荐(0)
C++ Primer 第三章 标准库类型
摘要:3.1 命名空间的using声明 using声明是对某个命名空间做引入。主要作用是简化代码编写。3.2 标准string类型 首先要明确类型是类类型,意味着它有构造函数,也类似我们自定义的类一样的其他类对象。 它有几种初始化方式如下 string s1 ; // 调用默认构造函数初始化对象 strng s2(s1) ; // 将S2初始化为S1的一个副本 string s3("value") ; // 用一个字符串值初始化对象 string s4(n,'c') ; // 用N个字符‘C’组成字符串作为初始化s4的值 特别要注意的是第一种初始化方式,虽然默认构 阅读全文
posted @ 2012-05-03 11:07 老金 阅读(1462) 评论(0) 推荐(1)
C++ Primer 第二章 变量和基本类型
摘要:2.1 基本内置类型 基本内置类型是C++“自带”的类型,区别于标准库定义的类型。使用时不需要应用标准库就可以使用,我们可以理解为数字型有下面这些 整形:就是整数或者是没有小数位的数。它包括bool(0,!0), char, wchar_t(非标准英文字符用char无法全部表现所以需要这个类型来表示),short, int ,long。 整形中除了bool外其他类型可以是带符号,也可以是无符号的,无符号的取值范围不能为负,有符号取值可以有正有负,但由于有符号数所占位其中一位是符号位所以它的正数取值范围要比无符号范围小一位。 浮点型:就是带小数的数,包括float , double , lon. 阅读全文
posted @ 2012-04-28 18:09 老金 阅读(1789) 评论(1) 推荐(0)
C++ Primer 第一章 快速入门
摘要:1.1 编写简单的C++程序 任何一个都要包含一个main函数,因为这个函数是系统执行入口c++也一样,函数格式是 int main(); 和别的主要函数不同C++的主函数有且只有一个且返回一个INT类型的值。一般来说返回0表示执行成功。程序员可以不必定义return 0返回这时候系统会在编译时自动加上retuan 0;1.2 偷窥输入输出 这里指的输入输出是说从标准设备输入内容或者将内容输出到表顺设备。比如说输出字符到显示器,输出一个图片到显示器。将字符或者二进制内容输出到文件。 或者从键盘输入内容到计算机,从一个文件读取内容到系统等等。 C++提供了标准输入输出库,最常用得是iostre. 阅读全文
posted @ 2012-04-28 17:06 老金 阅读(2005) 评论(0) 推荐(0)