摘要: std::function 和 std::bind标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数。bind()接受一个函数(或者函数对象,或者任何你可以通过”(…)”符号调用的事物),生成一个其有某一个或多个函数参数被“绑定”或重新组织的函数对象。(译注:顾名思义,bind()函数的意义就像它的函数名一样,是用来绑定函数调用的某些参数的。)例如: int f(int, char, double); // 绑定f()函数调用的第二个和第三个参数, // 返回一个新的函数对象为ff,它只... 阅读全文
posted @ 2014-02-27 17:04 zzyoucan 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的哦。因为,我个人觉得,智能指针内存管理要解决的根本问题是:一个堆对象(或则资源,比如文件句柄)在被多个对象引用的情况下,何时释放资源的问题。何时释放很简单,就是在最后一个引用它的对象被释放的时候释放它。关键的问题在于无法确定哪个引用它的对象是被最后释放的。std::shared_ptr确定最后一个引.. 阅读全文
posted @ 2014-02-27 16:07 zzyoucan 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 《Boost程序库探秘——深度解析C++准标准库》之试读 前一阵子还看到一篇文章,说C#要重蹈C++的覆辙,这里说的C++的覆辙是什么呢?是指C++语言过于臃肿的功能特性,导致学习人员的流失。文章说,语言最后的威力是“开发软件”,而不是“比拼新特性”在大学中,C++算是比较难学的语言。有些学校试图直接让学生们学习C++,结果效果不怎么好。这次,C++11又添加了大量新特性,如lambda,auto等,把C++弄的像动态语言一样。添加了那么多新特性,而为了照顾用户的习惯和已有的代码。又不能去除一些旧的特性,这样导致了C++越来越臃肿和复杂。记得在哪里看过,好像是塞伯斯塔的程序设计语言一书中说的吧 阅读全文
posted @ 2014-02-27 14:52 zzyoucan 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 从C++出来到现在已经13年了。Bjarne Stroustrup(C++的创造者)最近评价C++11:”感觉像个新的语言“。事实上,C++11核心已经发生了很重大的变化:1. 支持Lambda表达式( lambda expressions)2. 对象自动类型推导(automatic type deduction of objects)3. 统一初始化语法(uniform initialization syntax)4. 代理构造(delegating constructors)5. deleted 和defaulted函数声明(deleted and defaulted function d 阅读全文
posted @ 2014-02-27 14:35 zzyoucan 阅读(535) 评论(0) 推荐(0) 编辑
摘要: C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。 形式的标准头文件【 例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在 形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h形式的标准C库头文件名。C++标准库的内容分为10类:C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化C1 标准库中与语言支持功能相关的头文件 头文件 描述 .. 阅读全文
posted @ 2014-02-27 14:24 zzyoucan 阅读(1222) 评论(0) 推荐(0) 编辑