C++知识点---explicit、TR1、Boost

关键字:explicit

1、除非有明显的理由想要定义隐式转换,否则,单形参构造函数应该为explicit。

将构造函数设置为explicit可以避免错误,并且当转换有用时。用户可以显式地构造对象。

2、explicit关键字只能用于类内部的构造函数声明上。在类的定义体外部所做的定义上不再

重复它。

参考:《C++ Primer》 12.4.4

TR1

TRI ("Technical Report I") 是一份规范,描述加入 C++ 标准程序库的诸多新机
能。这些机能以新的 class templates 和 function templates 形式体现,针对的题目
有 hash tables, reference-counting smart pointers , regular expressions,以及更多。

所有 TRl 组件都被置于命名空间 tr1内,后者嵌套于命名空间 std 内。

参考: 《Effective C++》第三版中文版  导读部分

Boost
Boost 是个组织,亦是一个网站 (http://boost. org) ,提供可移植、同僚复审、源
码开放的 C++ 程序库。大多数 TRl 机能是以 Boost 的工作为基础。在编译器厂
商于其 C++ 程序库中含入 TRl 之前,对那些搜寻 TRl 实现品的开发人员而言,
Boost 网站可能是第一个逗留点。 Boost 提供比 TRl 更多的东西,所以无论如何

值得了解它。

参考: 《Effective C++》第三版中文版  导读部分

时间: 2024-12-04 06:27:49

C++知识点---explicit、TR1、Boost的相关文章

boost::asio的http client应用笔记

1 踩过的坑 1.1 io_service boost::asio::io_service::run()会一直运行到没有任务为止,如果中途调用stop(),则所有等待中的任务会立刻执行.要在停止的时候抛弃所有的任务,解决方案是用run_one(),即 while (keep_running) io_service_.run_one(); keep_running是个bool值,要stop io_service的时候直接置false即可. 1.2 deadline_timer 在调用async_w

boost库之tokenizer的使用

    在tokenizer出现之前,如果我们要对一个字符串进行分割,可能要自己封装一个函数.如果有n种不同的分割规则,那么你要封装n个不同的分割函数--太麻烦了!现在好了,Boost库的tokenizer封装了统一的语法来分割字符串,并且提供了三种常用的分割方式,足以满足我们的绝大多数编程需求.    tokenizer主要由分割器和迭代器两部分组成.分割器用于指定字符串的分割规则,如果不指定任何分割器,则tokenizer默认将字符串以空格和标点(键盘上除26个字母(包括大小写)和数字外的其

并发编程(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题

请阅读上篇文章<并发编程实战: POSIX 使用互斥量和条件变量实现生产者/消费者问题>.当然不阅读亦不影响本篇文章的阅读. Boost的互斥量,条件变量做了很好的封装,因此比"原生的"POSIX mutex,condition variables好用.然后我们会通过分析boost相关源码看一下boost linux是如何对pthread_mutex_t和pthread_cond_t进行的封装. 首先看一下condition_variable_any的具体实现,代码路径:/

【Boost】boost库asio详解3——io_service作为work pool

无论如何使用,都能感觉到使用boost.asio实现服务器,不仅是一件非常轻松的事,而且代码很漂亮,逻辑也相当清晰,这点上很不同于ACE.使用io_service作为处理工作的work pool,可以看到,就是通过io_service.post投递一个Handler到io_service的队列,Handler在这个io_service.run内部得到执行,有可能你会发现,io_services.dispatch的接口也和io_service.post一样,但不同的是它是直接调用而不是经过push

boost::asio译文

Christopher Kohlhoff Copyright 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt) Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多,可通过文件,网络,串口或控制台.例如在网络通信中,完成独

boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍

1.下载boost相关的库的安装包 网址:http://www.boost.org/ 其中1.55.0版本的下载地址是:http://sourceforge.net/projects/boost/files/boost/1.55.0/ 截图: 2.boost开发相关的软件: boost_1_55_0.tar.gz  Linux平台下面的boost源码包 boost_1_55_0.zip    Windows平台下面的boost源码包 boost_1_55_0-bin-msvc-all-32-64

boost::thread用法

最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程库.在创建线程时遇到了几种线程创建方式现总结如下:     首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象: (2)explicit thread(const boost::function0<void>& threadfunc):      boost::function0<void>可以

boost 学习笔记

先来看看如何赋值把: #include <iostream> #include <vector> #include <string> #include<deque> #include <set> #include <map> #include <boost/assign.hpp> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { using namesp

boost uuid

uuid: uuid库是一个小的使用工具,可以表示和生成UUID UUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构就可以创建全国唯一的标示符.别名:GUID uuid位于名字空间boost::uuisd,没有集中的头文件,把功能分散在了若干小文件中,因此为了使用uuid组件,需要包含数个头文件,即:#include <boost/uuid/uuid.hpp>#include <boost/uuid/uu