![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 60
dream0130__
这个作者很懒,什么都没留下…
展开
-
C++ 在编译阶段可以干什么? -- 学习笔记
编译阶段编译是预处理之后的阶段,输入是通过预处理之后的C++源码,输出是二进制可执行文件。编译阶段看到的都是 C++语法实体,比如说typedef ,using ,template , struct/class 这些关键字定义的类型,而不是运行阶段的变量。比如说,让编译器去递归计算斐波那契数列 template<int N> struct fib // 递归计算斐波那契数列 { static const int value = fib<N - 1>::value原创 2021-03-05 16:42:07 · 788 阅读 · 0 评论 -
宏实现大小端互换
//短整形高低字节交换#define Swap16(A) ((((uint16)(A) & 0xff00) >> 8) | (((uint16)(A) & 0x00ff) << 8))//长整形高低字节交换#define Swap32(A) ((((uint32)(A) & 0xff000000) >> 24) | (((uint32)(A) & 0x00ff0000) >> 8) | (((uint32)(A) &原创 2020-08-25 20:31:41 · 1149 阅读 · 0 评论 -
c++强制类型转换-学习笔记
c++强制类型转换分为四种,static_cast,dynamic_cast,const_cast,reinterpret_cast一.为什么在C++中还有特殊的四种强制转换因为C风格的强制类型转换,在C++中可能带来一些隐患,难以察觉.(可以在任意类型之间进行转换,...原创 2020-04-18 15:42:49 · 234 阅读 · 0 评论 -
C++的static 为什么不能和虚函数一起使用?
首先我们先做个例子试试看可以吗?class A{public : A(){}; ~A() = default; static virtual void test() { }};int main(){ A a; return 0;}编译结果报错:经过查询资料得知首先的话,静态函数是不和任何类对象或...原创 2020-03-13 10:59:39 · 586 阅读 · 0 评论 -
shared_ptr --学习笔记
对于shared_ptr学习笔记的整理一.管理具有共享所有权的资源通过std::shared_ptr智能指针访问的对象采用共享所有权来管理其生存周期,当最后一个指涉到某对象的std::shared_ptr不再指向它的时候,该std::shared_ptr会析构所指向的对象.std::shared_ptr可以通过访问某资源的引用计数来确定自己是不是最后一个指向该资源的.当然引用计数也会有性能...原创 2020-02-27 16:09:55 · 218 阅读 · 0 评论 -
C++的指针和引用的区别
编译器一般会将引用实现为const指针, 所以可以将引用看做是一种特殊的指针一.引用和指针的不同点引用必须进行初始化,不存在对于空对象的引用,指针可以为空,指向空对象#include<iostream>using namespace std;int main(){ int *a; int &b; return 0;}编译运行之后会报...原创 2020-02-01 14:50:10 · 190 阅读 · 0 评论 -
c++多线程中的利器-thread_local
我们在这里简单介绍一下在c++11中新添加的-thread_local我们在介绍thread_local之间首先需要说明一下什么是线程周期,以及什么情况下的变量可以被声明为thread_local一.什么是thread_local带有thread_local关键字的变量具有线程周期,这些变量在线程开始的时候就被生成,在线程销毁的时候就被销毁,并且每一个线程都具有一个独立的变量,也就是相当于每...原创 2020-01-15 19:49:09 · 1822 阅读 · 0 评论 -
c++11-解析移动语义和完美转发
写这篇博客的起因是有学弟问我,使用swap需要使用move语义吗?会不会更加的高效,我会在这篇博客中记录一下我对于move 的理解一.什么是移动语义和完美转发移动语义让编译器使用移动操作来替代赋值操作,同时也让创建只移类型称为可能,这些类型包括std::unique_ptr和std::future 和std::thread成为可能完美转发让人们可以接受任意实参的函数模板,目标函数会接受到完全...原创 2019-12-30 21:07:39 · 233 阅读 · 0 评论 -
Effective c++笔记-对于const的理解
一.要以const,enum,inline来尽可能的代替#define我们无法利用#define 创建一个class专属的常量,因为define并不重视作用域,也不能提供封装性对于单纯变量,最好是以const对象或者enums来代替#define对于形似函数的宏,最好使用inline函数来代替#define定义常量指针,由于常量定义是通常被放在头文件内,因此有必要将指针声明为const ,...原创 2019-04-10 22:18:26 · 200 阅读 · 0 评论