2012年5月16日
摘要: 14.1 重载操作符的定义 操作符(+ ,- , * , / , = , < , >)可以被内置类型使用,比如两个整数相加或相减,两个字符串相加,两个数组比较大小等等。自定义类默认是不能使用大多数操作符的。自定义类是复合类型,相加或想减或比较大小并没有相应的规则匹配:两个类相加等于什么? 两个类如何 阅读全文
posted @ 2012-05-16 11:51 老金 阅读(1272) 评论(0) 推荐(1) 编辑
  2012年5月15日
摘要: 复制构造函数、赋值操作符和析构函数总称为复制控制。编译器自动实现这些操作,但类也可以定义自己的版本。 复制构造函数是一种特殊构造函数,具有单个形参,该形参(常用 const 修饰)是对该类类型的引用。 析构函数是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。不管类是否定义了自己的析构函数,编译器都会自动为类中非 static 数据成员执行析构函数。 赋值操作符与构造函数一样,赋值操作符可以通过指定不同类型的右操作数而重载。右操作数为类类型的版本比较特殊:如果我们没有编写这种版本,编译器将为我们合成一个。class myclass{ public: mycla.. 阅读全文
posted @ 2012-05-15 14:54 老金 阅读(1104) 评论(0) 推荐(0) 编辑
  2012年5月14日
摘要: 简单地说,类就是定义了一个新的类型和一个新作用域。12.1 类的定义和声明 类由类成员组成。类成员包括属性,字段,成员函数,构造函数,析构函数等组成。 类设计应该遵从抽象封装性。 类抽象性指对于类的使用者来说只需知道类接口即可使用类功能。类的具体实现由设计者负责。即使某个功能发生了变更但由于使用者是以接口方式调用类所以用户代码无需做任何修改。 类封装性指类用户只需知道类的功能无需了解具体实现。实现代码对用户来说不可见。 C++类没有访问级别限限制,定义类时不能用public 或private 做修饰。类成员有访问级别,可以定义 public protect privateclassScre.. 阅读全文
posted @ 2012-05-14 17:11 老金 阅读(1384) 评论(0) 推荐(0) 编辑
摘要: 标准库提供的 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 老金 阅读(1092) 评论(2) 推荐(0) 编辑
  2012年5月11日
摘要: 关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 关联容器(Associative containers)支持通过键来高效地查找和读取元素。两个基本的关联容器类型是 map 和 set。 map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据。set 仅包含一个键,并有效地支持关于某个键是否存在的查询。 关联容器类型 map ... 阅读全文
posted @ 2012-05-11 15:05 老金 阅读(6146) 评论(0) 推荐(0) 编辑
  2012年5月10日
摘要: 标准库定义了三种顺序容器类型:vector、list 和 deque(是双端队列“double-ended queue”的简写,发音为“deck”)。 它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。 标准库还提供了三种容器适配器(adaptors)。 实际上,适配器是根据原始的 阅读全文
posted @ 2012-05-10 17:04 老金 阅读(2402) 评论(0) 推荐(0) 编辑
  2012年5月9日
摘要: 学习本章内容之前有必要对缓冲区的概念做一个基本了解,我引用了网上一片文章《C++编程对缓冲区的理解》,内容如下: 什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大... 阅读全文
posted @ 2012-05-09 15:19 老金 阅读(7398) 评论(3) 推荐(3) 编辑
  2012年5月7日
摘要: 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 老金 阅读(1147) 评论(0) 推荐(1) 编辑
摘要: 本章内容比较简单,不作过多说明。如果学习过任意一门编程语言可以跳过本章。 阅读全文
posted @ 2012-05-07 17:46 老金 阅读(589) 评论(0) 推荐(0) 编辑
摘要: Boost的thread库中目前并没有提供线程池,我在sorceforge上找了一个用boost编写的线程池。该线程池和boost结合的比较好,并且提供了多种任务执行策略,使用也非常简单。下载地址: http://threadpool.sourceforge.net/使用threadpool: 这个线程池不需要编译,只要在项目中包含其头文件就可以了。 例如我的threadpool.hpp文件路径(文件夹下有threadpool.hpp的路径)为/root/C++/app/threadpool-0_2_5-src/threadpool/boost,只需把这个目录下的所有文件(一个文件加一个目.. 阅读全文
posted @ 2012-05-07 12:25 老金 阅读(8492) 评论(0) 推荐(1) 编辑