C/C++
文章平均质量分 65
C/C++相关的学习收获
码农诗人
不以物喜,不以己悲,得之淡然,失之坦然
展开
-
C++11 shared_from_this学习
最近学习网络变成发现一些C++源码库中封装对象时会公有继承enable_shared_from_this;用一个案例进行说明,案例代码如下:#include <iostream>#include <memory>#include <stdio.h>using namespace std;class C : public enable_shared_from_this<C>{ public: shared_ptr&原创 2024-03-29 17:08:38 · 428 阅读 · 0 评论 -
VS2008生产动态库、静态库调用案例
VS2008生成动态库、静态库并引用案例原创 2023-03-09 15:38:07 · 1195 阅读 · 4 评论 -
epoll模型实现及惊群效应
epoll模型多进程的惊群效应现象理解原创 2022-09-09 14:59:29 · 589 阅读 · 0 评论 -
Linux的线程控制
进程两个特点:资源和调度,而线程是进程内的独立执行代码的实体和调度单元进程内的线程共享进程的资源线程间共享 线程私有 进程指令全局变量(非常容易实现线程的数据共享) 打开的文件 信号处理程序 当前工作目录 用户ID和组ID 线程ID PC指针(标识当前线程的执行位置) 线程栈 线程控制获取线程ID:pthread_t pthread_self(void) 返回值:成功:返回线程ID; 失败:无! 线...原创 2020-12-28 19:19:33 · 357 阅读 · 0 评论 -
线程池实现简单案例(C语言)
C语言简单实现线程池案例原创 2022-09-07 16:20:45 · 1297 阅读 · 2 评论 -
C 指针操作分析
最近学习Linux内核代码,两句指针代码顿时让我感觉自己的指针功底还是欠缺。在此对代码重新做了梳理、分析及记录。 源代码结构也挺简单。如下:static struct rtable *rt_base = NULL;static void rt_del(unsigned long dst, char *devname){ struct rtable *r, **rp; rp = &rt_base; // ………… 省略部分代码 while((...原创 2021-07-09 15:01:21 · 138 阅读 · 0 评论 -
C++ STL学习总结
C++ STL的三大组件:Containers, Iterators, Algorithms,即容器,迭代器和算法。容器负责存储数据,算法负责计算结果,而算法调用容器的数据必须通过迭代器去访问,而每一种容器都提供了一种访问该容器中数据的迭代器。STL主要提供有两类容器跟一类配接器,两类容器分别为:序列式容器<向量(vector)、双端队列(deque)、链表(list)>以及关联式容器<集合(set(multiset))及映射(map(multimap))>;配接器为:栈(stack原创 2021-02-28 16:01:24 · 302 阅读 · 0 评论 -
MySQL C++ 封装接口及事务测试验证
MySQL C++ 封装接口头文件 MySQLInterface.h 如下:#ifndef __MYSQL_INTERFACE_H__#define __MYSQL_INTERFACE_H__#include "winsock.h"#include <iostream>#include <string>#include "mysql.h"#include <vector>#include <string>#pragma comme原创 2020-10-08 12:00:36 · 276 阅读 · 0 评论 -
类模板剖析
类模板中成员函数的调用时机类模板是对一批仅仅成员数据类型不同的类的抽象,基本的概念性东西本章就不再赘述。本章主要探究一下类模板中的成员函数调用时机,下来看一下代码案例。#include <iostream>using namespace std;class Person1{public: void showPerson1(){ cout << "show person1" << endl;};};class Person2{publ.原创 2021-02-24 11:49:27 · 130 阅读 · 0 评论 -
C++菱形继承剖析
何为菱形继承?结构如下:如上图这种菱形形状的继承关系我们称之为菱形继承,这种继承会带来一系列问题,接下来我们在代码中演示。先看如下符合菱形继承的代码:#include <iostream>using namespace std;// 动物类class animal{public: int age;};// 驴类class donkey: public animal{};// 马类class horse: public animal{};//骡子原创 2021-02-23 12:17:52 · 377 阅读 · 0 评论 -
C++引用作为函数的返回值
C++中引用作为函数的入参相当于指针的作用,这里包含的一些基本的引用相关的知识就不再赘述。这里我们将引用作为函数的返回值来讨论一下。引用作为函数的返回值主要注意两个点:1、函数内部不用返回局部变量的引用;2、函数的调用可以作为左值存在。以下我们通过几个案例来说明这两个点。案例一:函数内部不能返回局部变量的引用。#include <iostream>using namespace std;int& mytest1(){ int a = 10; retu原创 2021-02-18 11:09:02 · 1511 阅读 · 2 评论 -
Linux下C语言时间函数
Linux C时间库函数关联关系图如下:C 库函数 -time()描述C 库函数time_t time(time_t *seconds)返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。如果seconds不为空,则返回值也存储在变量seconds中。声明下面是 time() 函数的声明。time_t tim...原创 2018-12-14 11:14:04 · 3128 阅读 · 0 评论 -
Linux 动态库调用回调函数
Linux环境下动态库调用回调函数是非常常见的。一般调用的访问mysql、sqlite及以一些数据库,都会调用对应数据库提供的动态库接口,这种方式特别方便,一直以来对于这种回调理解不是特别透,只是一味地调用,现在写篇博客简单的从自身的理解去诠释一下。写一个简单动态库调用回调函数案例:动态库代码:test.c如下:#include "test.h"void (*ptrFun...原创 2019-05-27 11:54:09 · 1827 阅读 · 0 评论 -
C/C++项目日志通用接口整理
对于C/C++项目比较大或模块比较多时,日志记录起来特别麻烦。将其整理为通用接口,后续开发比较方便。头文件 dg_log.h 如下:/****************************************************************************** Copyright (C), 2017-2018, xx...原创 2018-12-06 18:27:03 · 739 阅读 · 0 评论 -
C++ 函数对象(仿函数)
函数对象概念:模仿函数的类,使用方式如同函数本质:函数对象是一个类,不是一个函数;仿函数主要用于STL中的算法中,函数指针虽然也可以作为算法的参数,但它不能满足STL对抽象性的要求,也不能满足软件积木的要求–函数指针无法和STL其他组件搭配,产生更灵活变化。案例代码如下:#include <iostream>using namespace std; class MyAdd{public: int operator()(int v1,int v2)原创 2020-07-31 16:21:37 · 641 阅读 · 2 评论 -
C++类方法调用
在C++类内部方法调用时,一般都是先去定义一个类的变量,实例化之后再通过类对象去调用类内部的函数。在项目中发现另一种比较方便的方法,不需要定义类对象,话不多说直接上代码。实例代码如下:#include <iostream>using namespace std;class A{public: A(int iNum){ i = iNum; } ...原创 2019-10-29 09:31:19 · 15618 阅读 · 0 评论 -
C++中浅复制、深复制与String类实现
浅复制和深复制有关浅复制与深复制的定义为:对类进行复制的时候按位复制,即把一个对象各数据成员的值原样复制到目标对象中。当类中涉及到指针类型数据成员的时候,往往就会产生指针悬挂问题。看以下结构:class A{ public: int* a;};A a1;A b1=a1;b1=a1执行的是浅复制,此时a1.a和b1.a指向的是同一个内存地址,如果在析...原创 2019-06-28 12:09:42 · 663 阅读 · 0 评论 -
C/C++中const用法总结
C++中const修饰的变量、指针及函数一直弄得似懂非懂,经常受其困扰。趁有时间对其做以整理归纳。const 变量、指针及成员对象const修饰的变量称之为常量,定义时必须为其赋值,且后续不能修改其值。const修饰的指针分为两种:指针常量(int *const p)和指向常量的指针(int const *p 或 const int *p)。const修饰的对象称之为常量成员...原创 2019-07-10 13:45:58 · 331 阅读 · 0 评论 -
C/C++中结构体和类大小
类大小及结构体大小的解析原创 2019-07-11 12:26:03 · 1638 阅读 · 2 评论 -
C++多态原理详解(GDB调试分析)
C++多态是其作为面向对象语言相当重要的属性,对于其理解一直以来相对较模糊。结合gdb工具对C++多态理解分析是一个相当不错的选择。上一篇博客(https://blog.csdn.net/ddazz0621/article/details/95459993)在计算类大小时提及到了类中虚指针及虚函数表的结构,但并没有相对较为充足的依据,下来借助gdb工具来分析一下C++中虚指针及虚函数表的详细结构(...原创 2019-07-12 12:09:39 · 747 阅读 · 0 评论 -
C++ 模板函数实现string类型与数值类型(int,float)互转
C++中string类型与int、float互相转换运用模板函数实现,代码如下:/*filename : test.cppauthor : lijddata : 2019-09-06*/#include <iostream>#include <string>#include <sstream>using namespace st...原创 2019-09-06 17:04:15 · 1483 阅读 · 0 评论 -
C++析构函数剖析
基类指针可以指向派生类的对象,如果删除该指针;就会调用该指针指向的派生类析构函数,而派生类的析构函数又自动调用基类的析构函数,这样整个派生类的对象完全被释放。如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全。所以,将析构函数声明为虚函数是十分必要的。用实例代码更加清楚的验证,具体如下:...原创 2019-05-31 13:42:56 · 163 阅读 · 0 评论