![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Prime吉吉
业精于勤荒于嬉,行成于思毁于随。
展开
-
安装cppcheck 1.84
1.下载cppcheck1.84https://sourceforge.net/projects/cppcheck/files/cppcheck/1.84/cppcheck-1.84.tar.gz/download2.解压cppcheck1.84tar -zxvf cppcheck-1.84.tar.gz3.安装cppcheckcd cppcheck-1.84#编译make SRCDIR=build CFGDIR=/usr/share/cppcheck/ -j32#安装ma原创 2021-07-20 11:35:45 · 313 阅读 · 0 评论 -
htons() ntohl() ntohs() htons()的区别及详解
在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数: htonl()--"Host to Network Long int" 32Bytes ntohl()--"Network to Host Long int" 32Bytes htons()--"Host to Network Short int"转载 2020-07-30 15:18:10 · 815 阅读 · 0 评论 -
C++11 多线程 future 和 promise(转载)
1. < future >头文件简介Classesstd::futurestd::future_errorstd::packaged_taskstd::promisestd::shared_futureFunctionsstd::asyncstd::future_category2. std::future简单来说,std::future提供了一种访问异步操作结果...转载 2019-10-24 19:00:15 · 409 阅读 · 0 评论 -
pthread_mutex_init()函数详解
linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。即对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问...转载 2020-04-19 16:51:06 · 30123 阅读 · 1 评论 -
Linux C++实现拷贝文件夹
Linux C++实现拷贝文件及文件夹源文件:copy.cpp#include<stdlib.h>#include<dirent.h>#include<string.h>#include<stdio.h>#include<sys/stat.h>#include<iostream>#define BUFF...原创 2020-04-14 16:34:10 · 3484 阅读 · 1 评论 -
for auto与iterator使用的区别
auto和iterator与for循环合作,都可以访问STL的容器,下面总结一下它们的使用注意点:首先这里声明一个multimap<int, int> multiTest;1、当以for(auto it: multiTest)方式访问multiTest时,此时auto it变量访问的是mutlTest的形参,所以并没有真正修改mutlTest2、当以for(auto&......原创 2020-04-02 15:11:04 · 3218 阅读 · 1 评论 -
__declspec(dllexport)与__declspec(dllimport)的区别
dllexport和dllimport都是DLL内的关键字,即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。 dllexport是在这些类、函数以及数据的申明的时候使用。用他表明这些东西可以被外部函数使用,即(dllexport)是把 DLL中的相关代码(类,函数,数据)暴露出来为其他应用程序使用。使用了(dllexport)关键字,相当于声明了紧接...转载 2020-03-30 09:11:57 · 686 阅读 · 0 评论 -
#program编译器指令详解
每种C和C++的实现支持对其宿主机或操作系统唯一的功能。例如,一些程序需要精确控制超出数据所在的储存空间,或着控制特定函数接受参数的方式。#pragma指示使每个编译程序在保留C和C++语言的整体兼容性时提供不同机器和操作系统特定的功能。编译指示被定义为机器或操作系统特定的,并且通常每种编译程序是不同的。语法:#pragma token_string“token_string”是一系列...转载 2020-03-26 09:32:50 · 7621 阅读 · 0 评论 -
使用Qt实现FTP客户端
头文件ftp.h#pragma once#ifdef CREATEDELL_API_DU#else#define CREATEDELL_API_DU _declspec(dllexport)#endif#ifndef FTPCLIENT_H#include <QtCore\QString>#include <QtNetwork\QNetworkAcce...原创 2019-12-31 18:15:28 · 4581 阅读 · 2 评论 -
基本TCP套接字常用函数及参数详情
1.socket()函数#include <sys/types.h> #include <sys/socket.h>int socket(int domain, int type, int protocol);domain: 协议域type: 套接字类型protocol: 某协议类型常值domain参数的常用值Na...原创 2019-12-19 18:55:42 · 1055 阅读 · 0 评论 -
C++类中对同类对象private成员访问
本文转自:https://www.cnblogs.com/yanqi0124/p/3828507.html私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量. 然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明: 疑惑:为什么第26行...转载 2019-11-21 09:21:07 · 505 阅读 · 0 评论 -
C++系统调用和库函数调用的区别
本文转自:https://blog.csdn.net/shihuboke/article/details/79268185一、概念1.什么是系统调用?(常见Linux及其分类表) 所谓系统调用就是用户在程序中调用操作系统所提供的一个子功能,也就是系统API,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配...转载 2019-01-25 14:46:32 · 2259 阅读 · 0 评论 -
extern "C"的使用详解(转)
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有...转载 2018-11-13 09:57:51 · 275 阅读 · 0 评论 -
error: expected ‘)’ before ‘PRId64’ 解决办法(转)
本文转自:https://blog.csdn.net/beitiandijun/article/details/19156849error: expected ‘)’ before ‘PRId64’原来这个宏定义给c用的,C++要用它,就要定义一个__STDC_FORMAT_MACROS宏显示打开它。c++使用PRID64,需要两步:包含头文件:<inttypes.h>...转载 2018-10-18 16:37:54 · 4240 阅读 · 0 评论 -
构造函数能否为虚函数,析构函数能否为虚函数
一、构造函数为什么不能为虚函数1. 从存储空间角度,虚函数相应一个指向vtable虚函数表的指针,这大家都知道,但是这个指向vtable的指针事实上是存储在对象的内存空间的。问题出来了,假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函...转载 2018-09-19 14:53:15 · 1527 阅读 · 0 评论 -
基本套接字详解(转)
1.套接字地址结构结构体sturct sockaddr定义了一种通用的套接字地址,它在linux/socket.h中的定义代码如下:struct sockaddr{ unsigned short sa_family; char sa_data[14];}其中,成员sa_family表示套接字的协议族类型,对于TCP/IP协议该值为AF_INET...转载 2018-08-24 09:07:13 · 1452 阅读 · 0 评论 -
虚函数表详解
本文转自:https://blog.csdn.net/lihao21/article/details/50688337关键词:虚函数,虚表,虚表指针,动态绑定,多态一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个包含了虚函数的类都包含一个虚表。我们知道,当一个类(A)继承另一个类(B)时...转载 2018-06-22 17:29:10 · 54835 阅读 · 30 评论 -
牛客网刷面试题遇到的一些问题的总结(转载)
1.集线器共享宽带和交换机独占宽带。带宽100M为100Mb=12.5MB2.禁用 nagle实质就是不在延迟 TCP_NODELAY。3.如果一个超关键字去掉其中任何一个字段后不再能唯一地确定记录,则称它为“候选关键字”(Candidate Key)。候选关键字既能唯一地确定记录,它包含的字段又是最精炼的。也就是说候选关键字是最简单的超关键字。例子:已知关系R(F,G,H,I,J)及其上的函数相...转载 2018-05-07 11:30:14 · 384 阅读 · 0 评论 -
C/C++在不同操作系统中基本数据类型所占字节数
各个类型的变量长度由编译器来决定(实际上与操作系统位数和编译器都有关)使用时可用sizeof()得到,当前主流编译器一般是32位或64位。 类型 16位 32位 64位 char 1 1 1 short int 2 2 2 int 2 4 4 long i...原创 2018-05-08 23:32:33 · 1789 阅读 · 0 评论 -
printf "\033[ 颜色特效控制
代码解析实例:printf(“\033[1;33m Hello World. \033[0m \n”);\033 [1; 33m xxxx| | | |开始 背景色 字体色 字符串该段代码编译运行后显示的是蓝色背景,白色闪烁字的效果。解释下特殊字符的使用及定义...转载 2018-03-27 09:54:44 · 4640 阅读 · 0 评论 -
System V IPC & POSIX IPC 消息队列的区别
本文转自 https://blog.csdn.net/liuxingen/article/details/48421217消息队列允许进程之间以消息的形式交换数据,是一种常见的进程之间的通信机制。1. 消息队列的创建System V IPC:int msgget(key_t key, int msgflg); 返回值:message queue identifier on success, or ...转载 2018-04-09 09:38:35 · 1106 阅读 · 0 评论 -
C/C++ pthread_mutex_init等多线程函数的使用详解
本文转自 https://blog.csdn.net/dreamInTheWorld/article/details/52577681线程按照其调度者可以分为用户级线程和核心级线程两种 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持; 我们常用基本就是用户级线程,所以就只总结一下POSIX提供的用户级线程接口; 基本线程操作相关的...转载 2018-03-26 13:47:28 · 5683 阅读 · 1 评论 -
C++ 实现单例模式
本文转自:https://www.cnblogs.com/dupengcheng/p/7205527.html单例模式是任何面向对象语言绕不过的,单例模式是很有必要的,接下来我用最朴素的语言来解释和记录单例模式的学习。什么是单例模式?单例模式就是一个类只能被实例化一次 ,更准确的说是只能有一个实例化的对象的类。创建一个单例模式的类(初想)一个类只能有一个实例化的对象,那么这个类就要禁止别人new出...转载 2018-03-21 23:09:55 · 988 阅读 · 0 评论 -
设计模式C++实现(1)——工厂模式(转载)
本文转自 http://blog.csdn.net/wuzhekai1985 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向...转载 2018-03-14 12:35:44 · 177 阅读 · 0 评论 -
24种设计模式与6大原则(转)
总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。二、设计模式的六大原则1、开闭原则(Open C...转载 2018-03-12 22:18:23 · 337 阅读 · 0 评论 -
fopen函数详解
本文转自:https://blog.csdn.net/borenbao/article/details/8496401.2 文件的输入输出函数 键盘、显示器、打印机、磁盘驱动器等逻辑设备, 其输入输出都可以通过文件管理的方法来完成。而在编程时使用最多的要算是磁盘文件, 因此本节主要以磁盘文件为主, 详细介绍Turbo C2.0提供的文件操作函数, 当然这些对文件的操作函数也适合于非磁...转载 2019-01-25 15:17:25 · 11350 阅读 · 0 评论 -
C/C++浮点数在内存中的存储方式(转)
本文转自:https://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二...转载 2019-02-01 15:09:29 · 266 阅读 · 0 评论 -
C++封装继承多态总结
本文转自:http://blog.csdn.net/ruyue_ruyue/article/details/8211809面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装转载 2016-03-04 00:33:30 · 453 阅读 · 0 评论 -
使用c++11标准库codecvt转换字符编码(转)
本文转自:https://blog.csdn.net/wangji163163/article/details/8757212#include <stdio.h>#include <locale>#include <codecvt>#include <iostream>const std::string ws2s( const std...转载 2019-07-03 16:53:44 · 10255 阅读 · 0 评论 -
C++内存管理详解(转载)
本文转自:http://www.cnblogs.com/qiubole/archive/2008/03/07/1094770.html[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C+...转载 2019-03-19 09:37:40 · 944 阅读 · 0 评论 -
C++内存管理(转)
本文转自:https://blog.csdn.net/Lao_tan/article/details/81292676C++内存管理几乎存在于程序设计的方方面面,内存泄漏在每个C++程序中都有可能发生。参考网上大佬的博客,我们在这章对C++内存管理有一个大致的认识。本章包括内存管理,内存泄漏以及内存回收。C++测试岗位和开放岗位的面试很看重这一部分,因此很有必要说一下。本章讲解的内容均来自...转载 2019-03-18 16:16:43 · 215 阅读 · 0 评论 -
C++ new是否执行初始化
本文转自:https://blog.csdn.net/xingyanxiao/article/details/47401649C++在new时的初始化的规律可能为:对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0。以下代码:#include <i...转载 2019-03-21 18:02:42 · 1895 阅读 · 0 评论 -
C++拷贝构造函数与赋值运算符的区别
本文转自:https://www.cnblogs.com/wangguchangqing/p/6141743.html本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数、什么情况下调用赋值运算符。最后,简单的分析了下深拷贝和浅拷贝的问题。拷贝构造函数和赋值运算符在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算...转载 2019-03-21 17:39:14 · 664 阅读 · 0 评论 -
STL各容器使用场景
原文:https://blog.csdn.net/u013299585/article/details/78323973STL中常见容器,主要包括如下几种:vector, list, deque,set,multiset, map, multimap。选用合适的容器,对编写高效的程序,简洁的代码有重要意义;最近就项目中就涉及到一个容器选择的问题,设计一个数据结构时,开始使用了一个错误的...转载 2019-03-14 15:58:10 · 694 阅读 · 0 评论 -
const_cast用法
本文转自:https://www.cnblogs.com/QG-whz/p/4513136.htmlconst_cast也是一个强制类型转换操作符。《C++ Primer》中是这样描述它的:1.将转换掉表达式的const性质。2.只有使用const_cast才能将const性质性质转化掉。试图使用其他三种形式的强制转换都会导致编译时的错误。(添加const还可以用其他转换符,如stat...转载 2019-02-25 18:26:38 · 1251 阅读 · 1 评论 -
C++如何修改const变量(转)
本文转自:https://blog.csdn.net/heyabo/article/details/8745942一、结论声明:不同于C语言的const变量修改问题(可以通过指针间接修改const变量的值),这里只讨论C++ 里的const。C++ const 修饰符,表示常量,即如果以后保证不会修改则声明为const,否则若要修改,那一开始为什么还要声明为const呢?根据C++...转载 2019-02-12 21:49:35 · 1202 阅读 · 0 评论 -
共享内存实现原理
本文转自:https://blog.csdn.net/al_xin/article/details/38602093共享内存的使用实现原理(必考必问,然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?)nmap函数要求内核创建一个新额虚拟存储器区域,最好是从地质start开始的一个区域,并将文件描述符fd指定对象的一个连续的片(chunk)映射到这个新...转载 2019-02-18 11:52:17 · 621 阅读 · 0 评论 -
位域详解
本文转自:https://blog.csdn.net/lzeleven/article/details/70304445有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域...转载 2019-02-09 13:46:48 · 2155 阅读 · 0 评论 -
三十分钟掌握STL(转)
本文转自:http://net.pku.edu.cn/~yhf/UsingSTL.htmPS:原文说是三十分钟,实际我花了。。。3天才看完。。。向原作者致敬!这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚...转载 2019-03-01 10:40:19 · 280 阅读 · 0 评论 -
linux 共享内存实例(转)
/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内存应用编程接口API允许一个进程使 用公共内存区段。但是对内存的共享访问其复杂度也相应增加。共享内存的优点是简易性。 使用消息队列时,一个进程要向队列中写入消息,这要引起从用户地址空间...转载 2018-02-09 11:31:38 · 251 阅读 · 0 评论