
cpp
code_tree
这个作者很懒,什么都没留下…
展开
-
C++11智能指针
智能指针 智能指针其实就是一个模板类,将原始指针封装到类中,可由析构函数自动释放资源。 C++11提供了两种智能指针 不带引用计数的智能指针:auto_ptr scoped_ptr unique_ptr 带引用计数的智能指针:shared_ptr weak_ptr 智能指针浅拷贝问题:多个智能指针多次释放同一个资源 不带引用计数的智能指针: auto_ptr在处理浅拷贝的问题上,直接把前一个指针置为nullptr,只让最后一个指针持有资源 scoped_ptr与unique_ptr则直接删除了拷贝原创 2020-09-08 19:19:14 · 160 阅读 · 0 评论 -
C++basic--sizeof与strlen
sizeof与普通变量 char str[]="cumt"; char* p=str; int n=10; sizeof(str);//5 sizeof(p);//4 sizeof(n);//4 void func(char c[10]) { sizeof(c);//4 } void* a=malloc(10); sizeof(a);//4 sizeof(str)=strlen(str)+1 指针大小为4 整型大小为4 数组是"传址"的,指针大小为4 32位系统下无论何种指针大小都为4 sizeo原创 2020-08-06 20:25:22 · 152 阅读 · 0 评论 -
C++basic--bit位运算
位操作 C语言中,可以单独操控变量中的位. 位运算符 二进制反码或按位取反: ~ ~(00000010) //表达式 (11111101) //结果值 按位与: & 与运算同1为1,其余为0 (00000010)&(00000001) //表达式 (00000000) //结果值 按位或: | 或运算同0为0,其余为1 (00000010)|(00000001) //表达式 (00000011) //结果值 按位异或: ^ 异或运算不同为1,相同为0 (0000001原创 2020-08-06 20:22:05 · 448 阅读 · 0 评论 -
C++basic--static
static static关键字可以修饰不同的类型,如普通变量,普通函数,成员变量,成员函数.修饰不同的类型具有不同的含义. static与普通变量 当变量声明为static时,修改了变量的存储区域和生命周期,使变量存储在静态区,空间只分配一次. //countadd.cpp #include<iostream> using namespace std; void countadd(){ static int count = 0;//int count = 0; cout<原创 2020-07-16 10:50:13 · 131 阅读 · 0 评论 -
C++basic--const
const const用于限定一个变量为只读。 const定义常量 const double Pi= 3.14; 相对于#define,const更加灵活并且可以节省空间.必须初始化. const与指针 区分常量指针与指针常量(const在*前为常量指针),常量指针对象不能变,指针常量指针不能变. int a= 10; int *p=&a; const int *p=&a;//non-const pointer,const data,常量指针 int* const p=&a;//原创 2020-07-16 10:47:46 · 131 阅读 · 0 评论 -
C++basic--assert
assert assert断言,是宏. C语言中<assert.h>(C++)头文件由assert()宏组成.接受一个整型表达式作为参数,其作用是如果条件返回错误,则终止程序执行,并会显示失败的测试,包含测试的文件名和行号. assert的用法 //test.cpp #include<iostream> //#define NDEBUG #include<cassert> using namespace std; int main() { int a=10;原创 2020-07-12 23:12:34 · 165 阅读 · 0 评论 -
C++basic--enum
enum enum可创建符号常量. enum与枚举 enum定义的新类型称为枚举.其语法类似于struct enum color {red,orange,yellow,green,blue}; color为枚举 red,orange,yellow等称为符号常量,对应整数值0~4. 枚举只定义了赋值运算符,无法进行算术运算. 枚举量是整型,可转换为int型,但int型不能自动转换为枚举类型 可以强制类型转换将int转为枚举类型(枚举取值范围内) //test01.cpp #include<iost原创 2020-06-14 22:08:43 · 132 阅读 · 0 评论 -
C++basic--inline
inline 函数调用都有一定的开销(建立调用,传递参数,跳转到函数代码并返回). 使用宏使代码内联,可以避免这样的开销.另一种方法则是内联函数. 内联函数的编译代码与其他程序代码"内联"起来. 当调用内联函数时,程序使用内联代码代替函数调用. inline与常规函数 内联函数的运行速度比常规函数稍快.(代价是占用更多内存) //square.cpp #include<iostream> using namespace std; inline double square(double a){re原创 2020-06-09 21:36:48 · 160 阅读 · 0 评论