C/C++语法
江南读书郎
这个作者很懒,什么都没留下…
展开
-
关于boost中enable_shared_from_this类的原理分析 --转载
首先要说明的一个问题是:如何安全地将this指针返回给调用者。一般来说,我们不能直接将this指针返回。想象这样的情况,该函数将this指针返回到外部某个变量保存,然后这个对象自身已经析构了,但外部变量并不知道,此时如果外部变量使用这个指针,就会使得程序崩溃。使用智能指针shared_ptr看起来是个不错的解决方法。但问题是如何去使用它呢?我们来看如下代码:#include <...转载 2020-01-15 17:22:27 · 263 阅读 · 0 评论 -
建立简易的TCP服务器和TCP客户端程序(附代码及解析、可运行)
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。根据RFC793的定义:端口号拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即...原创 2019-09-24 16:45:48 · 1247 阅读 · 0 评论 -
C++中的_access函数(判断文件是否存在)
C++中的_access函数2018年08月21日 13:33:04monk1992阅读数 5402今天读代码看到一个access函数,当时没明白怎么回事。man了一下才知道该函数主要用于文件读取方面——判断文件是否存在,并判断文件是否可写。Linux下,该函数为access,位于头文件<unistd.h>中,而在标准C++中,该函数为_access,位于头文件<io...转载 2019-08-12 17:14:53 · 4561 阅读 · 0 评论 -
C++搜索指定目录下的目录和文件
源码:#include “stdafx.h”#include #include <io.h>#include #include using namespace std;#define ADDR “f:\.”const char* SearchAddr = ADDR;void findFile(const char* addr);int main(){ find...原创 2019-08-19 17:33:48 · 1203 阅读 · 0 评论 -
C++知识点--网上的图太模糊,自己重新写的,这些知识点都有记忆
-------------------------------------------------------------------------------------------------------------------------------------------------以上内容为本人学习摘录,来源多为网...原创 2019-08-19 17:15:03 · 74 阅读 · 0 评论 -
C++ 模板元编程
C++ 模板元编程英文:C++ template metaprogrammingmeta: “元”, 元数据(meta data)metaprogramming可以理解为对程序语言自身的某种特性,对程序语句进行编程,更简洁的说,对编程的编程--元编程。元编程有两种手段,一种是使用宏,另一种是使用模板。今天聊的是模板元编程。C++的模板元编程(TMP)主要是利用模板的特化和偏特化机制...原创 2019-08-07 22:07:43 · 1307 阅读 · 0 评论 -
C++利用 _findfirst与_findnext查找文件的方法
C++ 文件查找在C++中我们要如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirst、_findnext和_fineclose。具体如何使用,下面来一起看看吧_findfirst与_findnext查找文件一、这两个函数均在io.h里面。二、首先了解一下一个文件结构体...原创 2019-08-13 15:21:29 · 1687 阅读 · 0 评论 -
is_default_constructible类,std::enable_if和SFINAE
is_default_constructible 类测试类型是否具有默认构造函数。语法template <class Ty>struct is_default_constructible;备注如果类型T是具有默认构造函数的类类型, 则类型谓词的实例为 true; 否则为 false。这等效于谓词is_constructible<T>。类型T必须...原创 2019-08-02 13:51:51 · 1152 阅读 · 0 评论 -
static_assert函数,static关键字,move函数
static_assert的作用编译校验,校验条件失败,则输出错误信息格式:static_assert(“条件”,”错误信息”);例子:static_assert(sizeof(int)!=4,”不是32位操作系统!”);判断int长度是否为4,若不是,则说明不是在32bit编译环境,编译失败,并且打印错误信息。static 的作用修饰局部变量:1.只能对这...原创 2019-08-02 13:30:26 · 481 阅读 · 0 评论 -
如何阅读C/C++中的复杂的指针类型声明(源码中常遇到)
如何阅读C/C++中复杂指针类型声明我们经常遇到一些复杂的指针类型说明,很多初学者可能感觉有点蒙,即使是非常有经验的C/C++程序员,也会对那些比较复杂些的声明感到头疼。例如,下面这个是一个包含指针的数组,还是一个指向数组的指针呢int *a[10];好了,这个并不是特别复杂的声明,你可能快速而又准确的说出你的答案:一个含有10个指针的数组。那么,来一个更具挑战性的例...原创 2019-08-09 14:46:08 · 189 阅读 · 0 评论 -
#pragma warning( pop ) #pragma warning( push )
今天在看源码的时候,遇到以下内容:#pragmawarning(push)是保存当前的编译器警告状态;#pragmawarning(pop)是恢复原先的警告状态。例如:#ifdef _MSC_VER#pragma warning(push)#pragma warning(disable : 4100) // unused parameter#endif // _MSC_VE...原创 2019-08-09 14:46:20 · 1012 阅读 · 0 评论 -
引用折叠和万能引用
引用折叠和完美转发2018年11月25日 20:55:22_ReFantasy阅读数 120版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014351125/article/details/84502427阅读本文需要具有的预备知识:左值和右值的基本概念 模板推导的基本规则 若无特殊说明,本文中的大写字母T泛指任意的...原创 2019-08-02 13:31:27 · 1470 阅读 · 4 评论 -
关键字:decltype、constexpr、typename、class/函数:boolalpha
关键字:decltypedecltype操作符的值是一个类型,可用于其它对象的声明例如:double a =0.0;decltype(a) b =1.0;//b is a double可用于不知道变量类型的时候,或者变量类型名称过长,比如迭代器类型。*decltype只在编译期计算表达式的类型,不在运行期计算表达式的值例如:decltype(a++) c = 3.8; // c i...原创 2019-08-01 16:49:06 · 364 阅读 · 0 评论 -
C++中 using的用法小结
using 用法一:命名空间为了避免代码冲突,一般会用命名空间。例如:namespace MyTinySTL;在编码中可以用MyTinySTL::具体的类方法。也可以直接使用:using namespace MyTinySTL;using MyTinySTL::具体类方法;using 用法二 :引用基类成员在子类中引用基类的成员。先看下source code:class Base...原创 2019-08-01 10:51:25 · 664 阅读 · 0 评论 -
typedef常见用法
今天在查看源代码的时候,对typedef的用法不甚明了,因此特意查找资料,并记载。不管是在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错。用途一:定义一种类型的别名,而不只是简单...原创 2019-08-01 10:04:55 · 333 阅读 · 1 评论 -
关键字 static_assert
C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。其语法很简单:static_assert(常量表达式,提示字符串)。如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提示字符串。...原创 2019-08-03 16:08:53 · 344 阅读 · 0 评论 -
is_convertible、is_copy_constructible、
is_convertible判断是否可以被转化 第一个参数的类型 可以转化为第二个参数的类型对于类:如果A是基类,B是子类,那么B可以转化为A,也就是B是一种A;用is_convertible表示如下:std::cout<<std::boolalpha; //输出格式调整,0为false,非0为truestd::is_convertible<B,A>:...原创 2019-08-02 17:19:42 · 1756 阅读 · 0 评论