Boost库

作者: 元素周期表的十七君 | 来源:发表于2017-09-14 08:23 被阅读0次

http://zh.highscore.de/cpp/boost/functionobjects.html#functionobjects_function

Boost.Function

boost::function 可以定义一个指针,指向具有特定签名的函数。 

例如:

#include#include#include#includeint main() {  boost::functionf = std::atoi;

std::cout << f("1609") << std::endl;

f = std::strlen;

std::cout << f("1609") << std::endl;

}

以上例子定义了一个指针 f,它可以指向某个接受一个类型为 const char* 的参数且返回一个类型为 int 的值的函数。 定义完成后,匹配此签名的函数均可赋值给这个指针。 这个例程就是先将 std::atoi() 赋值给 f,然后再将它重赋值为 std::strlen()。

注意,给定的数据类型并不需要精确匹配:虽然 std::strlen() 是以 std::size_t 作为返回类型的,但是它也可以被赋值给 f。

因为 f 是一个函数指针,所以被赋值的函数可以通过重载的 operator()() 操作符来调用。 取决于当前被赋值的是哪一个函数,在以上例子中将调用 std::atoi() 或 std::strlen()。

如果 f 未赋予一个函数而被调用,则会抛出一个 boost::bad_function_call 异常。

相关文章

  • Linux下boost库的安装

    1)下载boost库boost1.65.1 2)解压boost库 3)编译bjam ./bjam 需要一段时间,编...

  • CentOS 上 编译MySQL-5.7.x 或者 MySQL-

    1.依赖包安装 2.下载mysql源码包和boost库 下载最新mysql源码 下载boost库,版本 boost...

  • 在CentOS 上 调试 MySQL-5.7.x 或者 MySQ

    1.依赖包安装 2.下载mysql源码包和boost库 下载最新mysql源码 下载boost库,版本 boost...

  • 让Caffe支持Python3

    caffe 依赖boost库,boost默认为Python2,需要用python3环境编译boost库。 一、用A...

  • C++ Boost库的编译、安装与运行

    一、下载Boost库 https://www.boost.org/users/download/ 二、编译、安装、...

  • C++ (boost) 单元测试

    C++ (boost) 单元测试 C++ boost 单元测试 [TOC] 基本概念 Boost test库提供了...

  • centos c++开发环境

    yum install gcc gcc-c++ 。下载boost库 http://www.boost.org/ s...

  • Boost库

    Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库...

  • Boost库

    http://zh.highscore.de/cpp/boost/functionobjects.html#fun...

  • boost库

    Linux下安装使用boost库 apt命令安装 这两个命令可以安装默认版本的boost库,如果想安装特定版本,需...

网友评论

      本文标题:Boost库

      本文链接:https://www.haomeiwen.com/subject/qlursxtx.html