![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ Primer Plus 第6版
文章平均质量分 54
心情第一
请不要假装努力,人生不会陪你演戏
展开
-
Log4cpp 安装和使用
ubuntu下安装与使用Log4cpp1、下载版本:log4cpp-1.1rc3.tar.gz, 该版本中没有1.0版本的那些bug,不需修改,下载地址:http://sourceforge.net/projects/log4cpp/2、解压下载的压缩文件:log4cpp-1.1rc3.tar.gz,可以使用命令行,或者右键压缩包,在弹出菜单项中选择“解压至此处”3、解压后的文件夹名为log4cpp,在终端(快捷键ctrl+alt+t)中,cd到该文件夹下,注意需要root权限。4、运行..转载 2021-07-28 15:31:49 · 1534 阅读 · 0 评论 -
gSOAP生成ONVIF框架代码
gSOAP生成ONVIF框架代码一次性把所有可能会用到的WSDL文档都纳入编译,以便得到一份尽可能齐全的ONVIF接口代码。我这样做是为了省事,但我希望你在心底里能明白一件事情:ONVIF有好多个模块,每个模块分别对应着不同的WSDL文档,如果你只是想实现其中某个模块的功能,其实只要拿那个模块对应的WSDL文档来编译即可(可以忽略其他WSDL)。比如你只是想实现「设备发现」功能,只要拿remotediscovery.wsdl来编译即可。为了让代码同时兼容Windows和Linux两个平台(未考虑其他转载 2021-07-28 15:31:02 · 761 阅读 · 0 评论 -
C++11 新特性(二)
14. C++11 for循环使用注意事项《C++11 for循环》一节已经详细介绍了 C++11 标准中 for 循环的基本用法。在此基础上,本节将介绍一些 for 循环的使用注意事项,帮助读者更准确高效地使用基于范围的 for 循环。1) 首先需要明确的一点是,当使用 for 循环遍历某个序列时,无论该序列是普通数组、容器还是用{ }大括号包裹的初始化列表,遍历序列的变量都表示的是当前序列中的各个元素。举个例子:#include <iostream>#includ...原创 2021-03-29 08:58:38 · 393 阅读 · 0 评论 -
C++ Object Persistence with ODB 学习笔记
1. 介绍ODB是c++的一个对象-关系映射(ORM)系统。它提供了工具、api和库支持,允许您将c++对象持久化到关系数据库(RDBMS),而无需处理表、列或SQL,也无需手工编写任何映射代码。 ODB是非常灵活和可定制的。它可以完全隐藏底层数据库的关系性质,也可以根据需要公开一些细节。例如,您可以自动将基本c++类型映射到合适的SQL类型,为持久类生成关系数据库模式,并使用简单、安全但功能强大的对象查询语言来代替SQL。或者,您可以为单个数据成员分配SQL类型,使用现有的数据库模式,运行本机..原创 2021-03-25 20:05:10 · 2084 阅读 · 0 评论 -
C++11 新特性(一)
经过作者的不断迭代,一本书往往会先后发布很多个版本,其中每个新版本都是对前一个版本的修正和更新。C++ 编程语言的发展也是如此。截止到目前(2020 年),C++ 的发展历经了以下 3 个个标准:2011 年,新的 C++ 11 标准诞生,用于取代 C++ 98 标准。此标准还有一个别名,为“C++ 0x”; 2014 年,C++ 14 标准发布,该标准库对 C++ 11 标准库做了更优的修改和更新; 2017 年底,C++ 17 标准正式颁布。C++11 是第二个真正意义上的 C++ 标准,也是原创 2021-03-24 09:22:21 · 480 阅读 · 0 评论 -
c++11 多线程
1 . 无参线程// 线程管理 #include <iostream>#include <thread>void hello(){ std::cout<<"Hello Concurrent World!"<<endl;}// 众所周知,主线程的入口函数为main函数。同样的,子线程也需要有一个入口函数hello,// 并在调用子线程的构造函数的时候传给子线程std::thread t(hello); int main(){ std原创 2021-03-17 10:27:45 · 77 阅读 · 0 评论 -
ONVIF协议网络摄像机(IPC)客户端程序开发(7):设备搜索
1.专栏导读转载 2021-02-01 16:23:23 · 242 阅读 · 0 评论 -
Modbus软件开发实战 -- 第七章 完整RTU模式开发范例
modbus 开发环境2.1 虚拟串口软件(VSPD) http://www.eltima.com 下载VSPD.exe 安装程序2.2 modbus Poll(主站设备仿真工具) http://www.modbustools.com2.3 modbus Slave(从站设备仿真工具) http://www.modbustools.com7.1 开发RTU Master篇#incl...原创 2020-11-02 10:57:33 · 1690 阅读 · 0 评论 -
Boost C++ 库 第 11 章 序列化
第11章序列化目录11.1 概述 11.2 归档 11.3 指针和引用 11.4 对象类层次结构的序列化 11.5 优化用封装函数 11.6 练习该书采用Creative Commons License授权11.1.概述Boost C++ 的序列化库允许将 C++ 应用程序中的对象转换为一个字节序列, 此序列可以被保存,并可在将来恢复对象的时候再次加载。 各种不同的数据格式,包括 XML,只要具有一定规则的数据格式,在序列化后都产生一个字节序列。所有 Bo...转载 2020-05-22 08:44:06 · 536 阅读 · 0 评论 -
Boost C++ 库 第 10 章 日期与时间
第10章日期与时间目录10.1 概述 10.2 历法日期 10.3 位置无关的时间 10.4 位置相关的时间 10.5 格式化输入输出 10.6 练习该书采用Creative Commons License授权10.1.概述库Boost.DateTime可用于处理时间数据,如历法日期和时间。 另外,Boost.DateTime 还提供了扩展来处理时区的问题,且支持历法日期和时间的格式化输入与输出。 本章将覆盖 Boost.DateTime 的各个部分。10....转载 2020-05-20 08:38:43 · 513 阅读 · 0 评论 -
Boost C++ 库 第 9 章 文件系统
第9章文件系统目录9.1 概述 9.2 路径 9.3 文件与目录 9.4 文件流 9.5 练习该书采用Creative Commons License授权9.1.概述库Boost.Filesystem简化了处理文件和目录的工作。 它提供了一个名为boost::filesystem::path的类,可以对路径进行处理。 另外,还有多个函数用于创建目录或验证某个给定文件的有效性。9.2.路径boost::filesystem::path是 Boost....转载 2020-05-20 08:37:06 · 250 阅读 · 0 评论 -
Boost C++ 库 第 8 章 进程间通讯
第8章进程间通讯目录8.1 概述 8.2 共享内存 8.3 托管共享内存 8.4 同步 8.5 练习该书采用Creative Commons License授权8.1.概述进程间通讯描述的是同一台计算机的不同应用程序之间的数据交换机制。 但不包括网络通讯方式。 如果需要经由网络,在彼此运行在不同计算机上的应用程序之间交换数据,请看第7章异步输入输出,该章讲述了 Boost.Asio 库。本章展示了Boost.Interprocess库,它包括众多的类...转载 2020-05-20 08:35:30 · 601 阅读 · 0 评论 -
Boost C++ 库 第 7 章 异步输入输出
第7章异步输入输出目录7.1 概述 7.2 I/O 服务与 I/O 对象 7.3 可扩展性与多线程 7.4 网络编程 7.5 开发 Boost.Asio 扩展 7.6 练习该书采用Creative Commons License授权7.1.概述本章介绍了 Boost C++ 库Asio,它是异步输入输出的核心。 名字本身就说明了一切:Asio 意即异步输入/输出。 该库可以让 C++ 异步地处理数据,且平台独立。 异步数据处理就是指,任务触发后不需要等待它们...转载 2020-05-20 08:33:20 · 437 阅读 · 0 评论 -
Boost C++ 库 第 6 章 多线程
第6章多线程目录6.1 概述 6.2 线程管理 6.3 同步 6.4 线程本地存储 6.5 练习该书采用Creative Commons License授权6.1.概述线程就是,在同一程序同一时间内允许执行不同函数的离散处理队列。 这使得一个长时间去进行某种特殊运算的函数在执行时不阻碍其他的函数变得十分重要。 线程实际上允许同时执行两种函数,而这两个函数不必相互等待。一旦一个应用程序启动,它仅包含一个默认线程。 此线程执行main()函数。 在main()中...转载 2020-05-20 08:31:56 · 283 阅读 · 0 评论 -
Boost C++ 库 第 5 章 字符串处理
第5章字符串处理目录5.1 前言 5.2 区域设置 5.3 字符串算法库 Boost.StringAlgorithms 5.4 正则表达式库 Boost.Regex 5.5 词汇分割器库 Boost.Tokenizer 5.6 格式化输出库 Boost.Format 5.7 练习该书采用Creative Commons License授权5.1.前言在标准 C++ 中,用于处理字符串的是std::string类,它提供很多字符串操作,包括查找指定字符或子...转载 2020-05-20 08:30:14 · 412 阅读 · 0 评论 -
Boost C++ 库 第 4 章 事件处理
第4章事件处理目录4.1 概述 4.2 信号 Signals 4.3 连接 Connections 4.4 练习该书采用Creative Commons License授权4.1.概述很多开发者在听到术语'事件处理'时就会想到GUI:点击一下某个按钮,相关联的功能就会被执行。 点击本身就是事件,而功能就是相对应的事件处理器。这一模式的使用当然不仅限于GUI。 一般情况下,任意对象都可以调用基于特定事件的专门函数。 本章所介绍的Boost.Signals库提...转载 2020-05-20 08:28:08 · 243 阅读 · 0 评论 -
Boost C++ 库 3 章 函数对象
第3章函数对象目录3.1 概述 3.2 Boost.Bind 3.3 Boost.Ref 3.4 Boost.Function 3.5 Boost.Lambda 3.6 练习该书采用Creative Commons License授权3.1.概述本章介绍的是函数对象,可能称为'高阶函数'更为适合。 它实际上是指那些可以被传入到其它函数或是从其它函数返回的一类函数。 在C++中高阶函数是被实现为函数对象的,所以这个标题还是有意义的。在这整一章中,将会介绍几个...转载 2020-05-20 08:24:42 · 163 阅读 · 0 评论 -
Boost C++ 库 第 2 章 智能指针
第2章智能指针目录2.1 概述 2.2 RAII 2.3 作用域指针 2.4 作用域数组 2.5 共享指针 2.6 共享数组 2.7 弱指针 2.8 介入式指针 2.9 指针容器 2.10 练习该书采用Creative Commons License授权2.1.概述1998年修订的第一版C++标准只提供了一种智能指针:std::auto_ptr。 它基本上就像是个普通的指针: 通过地址来访问一个动态分配的对象。std::auto_ptr之所以被看...转载 2020-05-20 08:23:16 · 195 阅读 · 0 评论 -
Boost C++ 库 第 1 章 简介
Boost C++ 库目录第1章简介 第2章智能指针 第3章函数对象 第4章事件处理 第5章字符串处理 第6章多线程 第7章异步输入输出 第8章进程间通讯 第9章文件系统 第10章日期与时间 第11章序列化 第12章词法分析器 第13章容器 第14章数据结构 第15章错误处理 第16章类型转换操作符内容你将学到些什么本书是对 Boost C++ 库的介绍,Boost...转载 2020-05-20 08:20:49 · 244 阅读 · 0 评论 -
为什么返回值为数值时,返回局部变量可以。而返回值为引用时,不能返回局部变量
最重要的一点:函数不能返回指向栈内存的指针!https://blog.csdn.net/weixin_40539125/article/details/81367466为什么?因为返回的都是值拷贝! 一般的来说,函数是可以返回局部变量的。局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是...转载 2020-02-12 19:06:09 · 681 阅读 · 0 评论 -
va_start和va_end使用详解
va_start和va_end使用详解 本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理:1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表v...翻译 2019-02-15 20:26:21 · 141 阅读 · 0 评论 -
C_C++变量命名规则
变量命名规则是为了增强代码的可读性和容易维护性。以下为C++必须遵守的变量命名规则:变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。 第一个字母必须是字母或者下划线开头。 不能使用C++关键字来命名变量,以免冲突。 变量名区分大小写。变量命名规则:一.用最短字符表示最准确的意义。二.使用变量前缀。1.整型前缀 int nId; ...转载 2019-01-28 23:27:27 · 999 阅读 · 0 评论 -
C++ 进程间的通讯 : 简单的有名管道实现
一 、管道简介命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。其优点是实现起来比较简单方便 .缺点是会使进程之间的代码耦合度增加.并且管道通信只适用于同一台主机上的...转载 2018-09-03 14:35:29 · 1246 阅读 · 0 评论 -
第02章 开始学习C++
本章内容包括:创建C++程序. C++程序的一般格式. #include编译指令. main()函数. 使用cout对象进行输出 在C++程序中加入注释. 何时以及如何使用endl. 声明和使用变量. 使用cin对象进行输入. 定义和使用简单函数.2.1 进入C++程序清单2.1 myfirst.cpp2.1.1 main()函数函数头和函数体;函数头对函数与程序...转载 2018-08-28 00:04:41 · 134 阅读 · 0 评论 -
第01章 预备知识
本章内容包括:C语言和C++的发展历史和基本原理. 过程性编程和面向对象编程. C++是如何在C语言的基础上添加面向对象概念的. C++是如何在C语言的基础上添加泛型编程概念的. 编程语言标准. 创建程序的技巧.1.1 C++简介C++融合了3种不同的编程方式:C语言代表的过程型语言,C++在C语言基础上添加的类代表的面向对象语言,C++模板支持的泛型编程.1.2 C++简史...转载 2018-08-28 00:04:31 · 130 阅读 · 0 评论 -
第10章 对象和类
本章内容包括:过程性编程和面向对象编程 类概念 如何定义和实现类 公有类访问和私有类访问 类的数据成员 类方法(类函数成员) 创建和使用类对象 类的构造函数和析构函数 const成员函数 this指针 创建对象数组 类作用域 抽象数据类型10.1 过程性编程和面向对象编程采用过程性编程方法时,首先考虑要遵循的步骤,然后考虑如何表示这些数据(并不需要程序一直运行,用...转载 2018-08-28 00:04:19 · 183 阅读 · 0 评论 -
第18章 探讨C++新标准
本章首先复习前面介绍过的C++11功能,然后介绍如下主题:移动语义和右值引用 Lambda表达式 包装器模板function 可变参数模板18.1 复习前面介绍过的C++11功能 18.1.1 新类型 18.1.2 统一的初始化C++11扩大了用大括号括起的列表(初始化列表)的适用范围,使其可用于所有内置类型和用户定义的类型(即类对象).使用初始化列表时,可添加登好(=),也可不添...转载 2018-08-28 00:04:09 · 220 阅读 · 0 评论 -
第17章 输入、输出和文件
本章内容包括:C++角度的输入和输出. iostream类系列 重定向 ostream类方法 格式化输出 istream类方法 流状态 文件I/O 使用ifstream类从文件输入 使用ofstream类输出到文件 使用fstream类进行文件输入和输出 命令行处理 二进制文件 随机文件访问 内核格式化用于文件输入和输出的C++工具都是基于cin和cout所基于的...转载 2018-08-28 00:03:52 · 277 阅读 · 0 评论 -
第16章 string类和标准模板库
本章内容包括:标准C++ string类 模板auto_ptr,unique_ptr和shared_ptr 标准模板库(STL) 容器类 迭代类 函数对象(functor) STL算法 模板initializer_list16.1 string类string类是由头文件string支持的(注意,头文件string.h和cstring支持对C-风格字符串进行操作的C库字符串函...转载 2018-08-28 00:03:42 · 275 阅读 · 0 评论 -
第15章 友元、异常和其他
本章内容包括:友元类 友元类方法 嵌套类 引发异常,try块和catch块 异常类 运行阶段类型识别(RTTI) dynamic_cast和typeid static_cast,const_cast和reiterpret_castRTTI是一种确定对象类型的机制.新的类型转换运算符提高了类型转换的安全性.15.1 友元也可以将类作为友元,在这种情况下,友元类的所有方法都...转载 2018-08-28 00:03:22 · 154 阅读 · 0 评论 -
第03章 数据处理
本章内容包括:C++变量的命名规则. C++内置的整型 unsigned long,long,unsigned int,int,unsigned short,short,char,unsigned char,signed char和bool. C++11新增的整型:unsigned long long和long long. 表示各种整型的系统限制的climits文件. 各种整型的数字字...转载 2018-08-28 00:03:13 · 129 阅读 · 0 评论 -
第04章 复合类型
本章内容包括:创建和使用数组 创建和使用C-风格字符串 创建和使用string类字符串. 使用方法getline()和get()读取字符串. 混合输入字符串和数字. 创建和使用结构. 创建和使用共用体. 创建和使用指针. 使用new和delete管理动态内存. 创建动态数组. 创建动态结构. 自动存储,静态存储和动态存储. vector和array类简介.4.1 数组...转载 2018-08-28 00:02:17 · 148 阅读 · 0 评论 -
第14章 C++中的代码重用
本章内容包括:has-a关系 包含对象成员的类 模板类valarray 私有和保护继承 多重继承 虚基类 创建类模板 使用类模板 模板的具体化通常,包含,私有继承和保护继承用于实现has-a关系,即新的类将包含另一个类的对象. 类模板使我们能够使用通用术语定义类,然后使用模板来创建针对特定类型定义的特殊类.14.1 包含对象成员的类 14.1.1 valarray类简介...转载 2018-08-27 12:47:06 · 230 阅读 · 0 评论 -
第13章 类继承
本章内容包括:is-a关系的继承 如何以公有方式从一个类派生出另一个类 保护访问 构造函数成员初始化列表 向上和向下强制转换 虚成员函数 早期(静态)联编与晚期(动态)联编 抽象基类 纯虚函数 何时及如何使用公有继承面向对象编程的主要目的之一是提供可重用的代码.目前,很多厂商提供了类库,类库由类声明和实现构成.因为类组合了数据表示和类方法,因此提供了比函数库更加完整的程序包...转载 2018-08-27 12:11:51 · 193 阅读 · 0 评论 -
第12章 类和动态内存分配
本章内容包括:对类成员使用动态内存分配 隐式和显式复制构造函数 隐式和显式重载赋值运算符 在构造函数中使用new所必须完成的工作 使用静态类成员 将定位new运算符用于对象 使用指向对象的指针 实现队列抽象数据类型(ADT)12.1 动态内存和类C++使用new和delete运算符来动态控制内存.12.1.1 复习示例和静态类成员程序清单12.1 strngbad.h...转载 2018-08-27 12:09:39 · 300 阅读 · 0 评论 -
第11章 使用类
本章内容包括:本章内容包括: 运算符重载 友元函数 重载<<运算符,以便用于输出 状态成员 使用rand()生成随机值 类的自动转换和强制类型转换 类转换函数 学习C++的难点之一是需要记住大量的东西,但在拥有丰富的实践经验之前,根本不可能全部记住这些东西.从这种意义上说,学习C++就像学习功能复杂的字处理程序或电子制表程序一样.任何特性都不可怕,但多数人只掌...转载 2018-08-27 12:06:09 · 179 阅读 · 0 评论 -
第06章 分支语句和逻辑运算符
本章内容包括:if语句 if else语句 逻辑运算符:&&,||和! cctype字符函数库 条件运算符:?: switch语句. continue和break语句 读取数字和循环 基本文件输入/输出设计智能程序的一个关键是使程序具有决策能力.6.1 if语句程序清单6.1 if.cpp6.1.1 if else语句程序清单6.2 ifelse...转载 2018-08-27 11:58:28 · 202 阅读 · 0 评论 -
第09章 内存模型和名称空间
本章内容包括:单独编译 存储持续性,作用域和链接性 定位(placement) new运算符 名称空间C++名称空间是另一种控制访问权的方式.9.1 单独编译请不要将函数定义或变量声明放到头文件中. 一般头文件中常包含的内容 函数原型 使用#define或const定义的符号常量 结构声明 类声明 模板声明 内联函数 例如:使用”coordin....转载 2018-08-27 11:51:23 · 147 阅读 · 0 评论 -
第08章 函数探幽
本章内容包括:内联函数 应用变量 如何按引用传递函数参数 默认参数 函数重载 函数模板 函数模板具体化8.1 C++内联函数常规函数和内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中. 内联函数的编译代码与其他程序代码”内联”起来了.编译器将使用相应的函数代码替换函数调用.内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存.所以应该有选...转载 2018-08-27 11:47:52 · 182 阅读 · 0 评论 -
第05章 循环和关系表达式
本章内容包括:for循环. 表达式和语句. 递增运算符和递减运算符:++和–. 组合赋值运算符. 复合语句(语句块). 逗号运算符. 关系运算符:>,>=,==,<=,<和!=. while循环. typedef工具. do while循环. 字符输入方法get(). 文件尾条件. 嵌套循环和二维数组.5.1 for循环程序清单5.1 fo...转载 2018-08-27 11:39:24 · 168 阅读 · 0 评论