
C++
C++基础知识
心如镜止于水
努力不让自己后悔
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux下时间相关接口
Linux下时间函数说明原创 2022-12-02 11:11:29 · 921 阅读 · 1 评论 -
gdb调试
gdb调试Core文件Linux系统默认不生成core文件的。可以通过命令 ulimit -a 查看解析core相关文件通过gdb 可执行程序 进行调试模式设置调试根文件路径 通过命令 set sysroot 路径指定调试的根路径,该路径只能设置一个。通过set solib-search-path 路径指定库查找路径,该路径可以是相对路径也可以是绝对路径,相对路径是相对与上面sysroot路径的相对路径,可以指定多个,用:隔开。使用命令core-file core文件执行命令,接下来就原创 2022-02-08 14:19:01 · 840 阅读 · 0 评论 -
C++常用数据类型转换
int类型转大写十六进制#include <iomanip>#include <iostream>#include <string>#include <sstream>using namespace std;string dec2hex(int i,size_t width,char c){ stringstream ioss; string s_temp; ioss << setw(width) << setfi原创 2020-12-23 09:53:27 · 176 阅读 · 0 评论 -
C++中typename与template
简介在C++中最常见的这两个名称在模板中,不过其都有自己的特殊作用,帮助编译器通过代码编译,解决歧义问题显示实例#include <cstdio>#include <string>#include <vector>//一个模板函数template<typename T>typename T::value_type my_sum(const T& cont){ typename T::value_type res={}; for(c原创 2020-07-11 22:55:00 · 852 阅读 · 0 评论 -
C++管理非指针资源
简介关于智能指针的小技巧,相比于java的finally和go的defer,C++没有自己管理非指针资源(文件描述符,句柄)的办法,不过可以通过智能指针的异常安全可以简介解决这个问题。源码#include <memory>#include <iostream>#include <fcntl.h>using namespace std;int main(){ int fd = open("main.cpp",O_RDONLY,0); if(fd原创 2020-06-20 18:59:28 · 229 阅读 · 0 评论 -
C++程序设计
文章目录转换函数(conversion function)单参数隐式转换(non-explicit-one-argument ctor)仿函数 (function-like classes)模板类模板函数模板成员模板模板特化(全特化)偏特化模板模板参数转换函数(conversion function)class Fraction{public: Fraction(int num,int den = 1): m_numerator(num),m_denominator(den){} //转换函数原创 2020-06-02 22:53:00 · 235 阅读 · 0 评论 -
C++11 线程池 —— 能够自动管理线程数量
文章目录简介SafeQueue.hThreadPool.h成员变量构造函数线程工作函数线程池的创建线程池的销毁推送任务队列管理线程测试用例总结简介最近学习C++11 的thread并发编程,但是里面的内容还不是很全面,线程池和一些信号量也没有,之前的笔记linux网络编程学习笔记——线程池是基于纯c的linux版本的,想着基于C++11 thread 和其新特性做一个类似的线程池组件以便于学习,大部分借鉴github上一个threadpool,只是这个没有线程池管理,无法根据情况自动扩容和缩减线程数量,原创 2020-05-23 17:01:25 · 2345 阅读 · 0 评论 -
C++11 并发编程——thread库
文章目录简介线程的创建线程传参与线程id数据共享问题简介从C++11开始新增了很多新的库与特性。包括并发编程,之前windows上与linux上的线程开发的接口不同,移植起来特别麻烦,现在C++11中新增了thread库,使的能够同时运行在linux与windows上。线程的创建#include <iostream>#include <thread>using namespace std;void Print(){ cout << "hello ljw"原创 2020-05-20 20:35:56 · 1306 阅读 · 0 评论 -
C++11 std::bind(),std::function,std::ref(),std::cref
文章目录std::bindstd::functionstd::ref();std::crefstd::bindstd::bind可以预先把某个可调用对象的某些参数绑定到已有的变量,产生一个新的可调用对象。bind本身是一种延迟计算的思想,它本身可以绑定普通函数、全局函数、静态函数、类静态函数甚至是类成员函数。bind最终将会生成一个可调用对象,这个对象可以直接赋值给std::function对象,而std::bind绑定的可调用对象可以是Lambda表达式或者类成员函数等可调用对象。使用方式:bind转载 2020-05-16 14:23:32 · 486 阅读 · 0 评论 -
C++11/14新特性综述整理
文章目录右值引用右值引用主要作用临时对象非必要的昂贵的拷贝操作,第二个问题是在模板函数中如何按照参数的实际类型进行转发。可以参考右值引用主要理解,左值,将亡值,纯右值左值:所有的具名变量或对象都是左值将亡值:C++11新增的、与右值引用相关的表达式,比如,将要被移动的对象、T&&函数返回值、std::move返回值和转换为T&&的类型的转换函数的返回值...原创 2020-04-30 09:15:18 · 1338 阅读 · 0 评论 -
高效C++编程学习笔记(六)
文章目录继承于面向对象设计确定你的public继承塑模出is-a关系避免遮掩继承而来的名称继承于面向对象设计确定你的public继承塑模出is-a关系“public继承”意味is-a。适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived class对象也都是一个base class对象。避免遮掩继承而来的名称该题材主要...原创 2020-02-17 17:23:25 · 894 阅读 · 0 评论 -
高效C++编程学习笔记(五)
实现条款26.尽可能延后变量定义式的出现时间与C语言将所有变量定义在开头不同,C++在变量使用的时候再定义它,以避免构造与析构的时候造成资源浪费。ps:个人理解,尽管这样子能提高代码运行效率,但感觉可读性会变差举两个例子std::string encryptPassword(const std::string& password){ using namespace std;...原创 2020-01-17 16:13:00 · 143 阅读 · 0 评论 -
高效C++编程学习笔记(四)
文章目录设计与声明条款20. 用引用代替值传递条款21.返回对象时,别返回引用(reference)条款22.将成员变量声明为private条款23.用non-member,non-friend替换member函数设计与声明条款20. 用引用代替值传递在不改变函数传递对象的前提下,函数参数尽量使用引用,总所周知的功能主要有以下两点能提高传参效率,避免多次拷贝与析构。避免对象切割。以代...原创 2020-01-15 19:28:12 · 241 阅读 · 0 评论 -
高效C++编程学习笔记(三)
文章目录资源管理条款13.以对象管理资源条款14.在资源管理类中谨慎copy操作。资源管理条款13.以对象管理资源STL标准库一共提供了四种智能指针auto_ptr,unique_ptr,shared_ptr和weak_ptr。其中auto_ptr已经被unique_ptr替代。用于管理动态内存。四种指针详解以工厂模式为例,class Investment {...}; //工厂基类...原创 2020-01-13 10:14:08 · 207 阅读 · 0 评论 -
高效C++编程学习笔记(二)
文章目录默认构造函数/拷贝函数/赋值运算防止编译器使用默认的构造/拷贝/赋值函数为多态基类声明virtual析构函数别让异常逃离析构函数。默认构造函数/拷贝函数/赋值运算编译器可以暗自为class创建默认构造函数,拷贝构造函数,赋值操作符以及析构函数需要注意的有以下几点:对于拷贝与赋值操作,注意成员的浅拷贝与深拷贝。对于引用与const类型的变量,拷贝与构造函数需要自己实现,默认生成的...原创 2020-01-08 17:31:53 · 201 阅读 · 0 评论 -
高效C++编程学习笔记(一)
文章目录尽量以const,enum,inline替换#define常量定义定义常量指针class专属常量尽量以const,enum,inline替换#define这样子能够是编译器有较好的较错机制常量定义#define ASPECT_RATIO 1,653通常替换为const double AspectRatio = 1.653定义常量指针相对于 const char* cons...原创 2020-01-06 10:47:02 · 201 阅读 · 0 评论