
现代C++
文章平均质量分 86
学习和掌握现代C++的核心编程
神威难藏泪~
努力学习现代C++和QtWidget界面编程
展开
-
thread的使用
在上面的示例程序中有一个 bug,在主线程中依次创建出两个子线程,打印两个子线程的线程 ID,最后主线程执行完毕就退出了(主线程就是执行 main () 函数的那个线程)。如上我们在主线程中执行interact()这个交互函数,子线程执行文件下载的函数,当主线程执行完成后,不会立马退出程序和回收资源,程序会陷入阻塞,等待下载文件的子线程完成,才会退出程序。但是子线程对象中的任务函数会继续执行,当任务执行完毕之后join()会清理当前子线程的相关资源然后返回,同时,调用该函数的线程解除阻塞继续向下执行。原创 2023-09-28 22:54:21 · 220 阅读 · 0 评论 -
chrono时间库
可以使用std::this_thread::sleep_for代替Unix操作系统专有的usleep。除了接受一个时间段sleep_for,还有接受一个时间点的sleep_until,表示让当前线程休眠到某个时间点。利用CPP强类型的特点,明确区分时间点和时间段,明确区分不同的时间单位。原创 2023-09-27 23:24:14 · 263 阅读 · 0 评论 -
C++Logger日志库的实现
该项目是基于C++实现的简单日志库系统,代码方面大约200多行,比较简单,封装的接口很容易看懂,使用起来也十分方便,通过定义的宏来实现打印输出到日志文件中。原创 2023-01-19 13:39:53 · 3916 阅读 · 4 评论 -
可调用对象和可调用对象的包装器
可调用对象是C++11引入的概念,可以像函数调用方式的触发调用的对象就是可调用对象。如下是可调用对象的几种定义:原创 2023-01-17 14:31:22 · 304 阅读 · 0 评论 -
string和string_view用法指南
我们编写的每个应用程序都会使用某种类型的字符串,使用C语言时,没有太多选择,只能使用普通的以'\0'结尾的字符数组表示的字符串。这种表达方式会导致许多问题,例如会导致安全漏洞的缓冲区溢出,C++标准库包含一个安全易用的std::string类,这个类符合RALL思想,没有这些缺点。原创 2023-01-15 14:45:02 · 2539 阅读 · 0 评论 -
C++11之基于范围的for循环
在C++98中,不同的STL容器和C风格数组的遍历方式各不相同,写法也不统一,而且不够简洁。而C++11基于范围的for循环可以简洁并且统一的方式遍历STL容器和C风格数组。原创 2023-01-13 19:51:47 · 1367 阅读 · 0 评论 -
共享智能指针
共享智能指针是指多个智能指针可以同时管理同一块有效的内存,共享智能指针shared_ptr是一个模板类,如果要进行初始化有三种方式:通过构造函数、std::make_shared辅助函数以及reset方法原创 2023-01-11 14:02:09 · 1393 阅读 · 0 评论 -
RALL原则和unique_ptr
RALL是resource acquisition is initialization的缩写,意思是”资源获取即初始化”**。它是C++之父Bjarne Stroustrup提出的设计理念,**其核心是把资源和对象的声明周期绑定,对象创建获取资源,对象销毁释放资源原创 2023-01-09 14:11:21 · 869 阅读 · 0 评论 -
资源转移和完美转发
在C++11中添加了右值引用,并且不能使用左值初始化右值引用,如果想要使用左值初始化一个右值引用需要借助std::move()函数,使用std::move方法可以将左值转化为右值。使用这个函数并不能移动任何东西,而是和移动构造函数一样具有移动语义,将对象的状态或者所有权从一个对象移动到另一个对象上,只是转移,没有内存拷贝原创 2023-01-08 14:35:20 · 166 阅读 · 0 评论 -
右值引用
C++11增加了一个新的类型,称为**右值引用(R-value reference)**,标记为 **&&**。在介绍右值引用类型之前要先了解什么是左值和右值原创 2023-01-07 20:08:12 · 1438 阅读 · 0 评论 -
1、原始字面量简介
C++11新特性-原始字面量原创 2023-01-07 15:50:14 · 309 阅读 · 0 评论