首页 > 其他分享 >杂项

杂项

时间:2024-04-09 21:00:43浏览次数:15  
标签:%. nullptr 杂项 cpp shared ptr 指针

c++ 相关杂项

nullptr

C语言中NULL定义为(void *)0,可以隐式转换为指针类型;但C++中NULL定义为0(强类型语言,void*不能转化为其他指针类型,因此修改了定义),可以隐式转换为整数类型和指针类型。为了解决函数重载时NULL的二义性,C++11中引入了nullptr关键字,表示空指针,可以隐式转换为任意指针类型。即使用nullptr代替NULL,而NULL代替0。

const class nullptr_t
{
public:
	// 重载了指针类型的隐式转换
    template<class T>
    inline operator T*() const
        { return 0; }
	
	// 重载了成员指针类型的隐式转换
    template<class C, class T>
    inline operator T C::*() const
        { return 0; }
 
private:
void operator&() const;
} nullptr = {};

智能指针

shared_ptr

std::shared_ptr 是一种智能指针,它能够记录多少个shared_ptr 共同指向一个对象,从而消除显式delete,引用计数为0时自动释放内存。
通常使用make_shared来创建shared_ptr,因为make_shared是原子操作,不会出现内存泄漏。

引用成环

unique_ptr

std::unique_ptr 是一种独占式智能指针,它能够确保同一时间只有一个unique_ptr指向一个对象,不支持普通拷贝和赋值,但支持移动构造和移动赋值。

静态库制作和使用

gcc -c xxx.c
ar rcs libxxx.a xxx.o

# 用户级库放在/usr/local/lib下
gcc -static -o main main.c -L. -lxxx

动态库制作和使用

gcc -fPIC -shared -o libxxx.so xxx.c

gcc -o main main.c -L. -lxxx

Makefile

一个通用的模板

CXX = g++
TARGET = server
CFLAGS = -std=c++14 -O2 -Wall -g
LIBS = -pthread -lmysqlclient

SRCDIR = ./code 
# 找到源目录下的所有.cpp文件
SRC = $(shell find $(SRCDIR) -name "*.cpp")
# 将所有.o文件放在bin目录下
DESDIR = ./bin
# 将所有.cpp文件转换成DESDIR目录下的.o文件
OBJS = $(patsubst  %.cpp, $(DESDIR)/%.o, $(notdir $(SRC)))

# 找到所有的源文件目录,后续生成.o时可以从这些目录中找到对应的.cpp文件
SOURSE_DIR = $(dir $(SRC))
vpath %.cpp $(SOURSE_DIR)

$(TARGET): $(OBJS)
	$(CXX) $(CFLAGS) $(OBJS) -o $@ $(LIBS)

$(DESDIR)/%.o: %.cpp
	$(CXX) -c $< -o $@ $(LIBS)

.PHONY: clean
clean:
	rm -rf $(OBJS) $(TARGET)

make 编译
make clean 清理
make install 安装到/usr/local/bin(二进制文件),/usr/local/lib(库)以及/usr/local/include(头文件)

标签:%.,nullptr,杂项,cpp,shared,ptr,指针
From: https://www.cnblogs.com/wangerblog/p/18124801

相关文章

  • 4.7 数组的读取和写入,type指令和一些杂项
    4.7数组的读取和写入,type指令和一些杂项可以通过wordptr将db转为dw,然后按照dw的方式去存储数据1.段名也可以把其地址赋给变量assumecs:codesg,ds:data,ss:stackdatasegmentdb12,34dw12,34db'helloworld'dataendsstacksegmentdb10d......
  • Android杂项知识记录
    Android启动流程:https://blog.csdn.net/xingyu19911016/article/details/120023396https://blog.csdn.net/ldxlz224/article/details/123238353init进程为第一个用户级别的进程,PID为1,它通过一系列的初始工作以及解析init.rc(一个脚本文件)文件构建出Android系统运行的初始......
  • ctfshow 杂项
    杂项签到:文件伪加密:确定是文件伪加密后就需要将其修改为无加密,方法很简单,就是将压缩源文件目录区的全局方式位标记(504B01 02 1400)后从0900改为0000。另一种方法,用zipcenop,将压缩包与其放在同一目录下,然后用cmd进入该目录,执行java-jarZipCenOp.jarr压缩包名称.z......
  • 杂项03
    后端问题1.@Controller和@Conponent的区别通常情况下我们认为二者没有太大的区别,两个注解都会使得被注解的类被加载到Spring容器中,被IOC容器管理;@Controller继承了@Conponent,具有@Conponent的功能,@Controller主要用于标记控制器类,它通常在SpringMVC应用程序中使用,用......
  • 杂项04
    个人项目用到的知识:增删改查,分页,高级查询,Vue+elementUI,Hutool工具包,登录功能,session跨域问题解决,登录拦截…一、后端项目构建1.后端环境搭建构建项目:个人项目是一个基于Springboot+Vue的前后端分离的项目建父项目,父项目是一个空项目,子模......
  • 杂项
    Spring测试一直记错怎么测试Spring方法依赖:junit依赖不需要,下面已经整合包括了<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.1.6.REL......
  • 【杂项】trick
    数区间颜色个数只数最左边的一个。维护时间戳来避免多次memset。树状数组上倍增-\(O(\logn)\)。P6619[省选联考2020A/B卷]冰火战士开始二分,设初始位置为\(r\),\(sum=\sum\limits_{i=1}^rtr_i\),要求的数记为\(ans\)。考虑依次跳\(2^{\logn},2^{\logn-1},.......
  • 杂项
    数据生成#include<bits/stdc++.h>usingnamespacestd;signedmain(){mt19937_64rd(chrono::system_clock::now().time_since_epoch().count());uniform_int_distribution<int>dis(1e7,1e9);for(inti=1;i<=10;i++){s......
  • 杂项
    杂项等比数列:\(S_n=a_0\frac{q^n-1}{q-1}\)n以内质数个数大概是\(\frac{n}{\ln\n}\),插一条证明(虽然这篇文章大部分都是在讲别的……)在12e9范围内,1N中任何数的不同质因子都不会超过10个,且所有质因子的指数总和不超过30证明:因为最小的11个质数的乘积大于2e9,且2^31>2e9,所以成......
  • 杂项与密码10
    misc1.盲文,摩斯 用了已知工具,不知道。。。搜一哈 下面是盲文。。。。对着看看kmdonowg 得到一个音频。。。像电报  是摩斯密码 得到答案 2.与佛论禅密码,zip伪密码 试了可用工具。。。没找到什么,搜搜。。 伪加密。。。好像是修改成00 是佛曰密码......