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 · 115 阅读 · 0 评论 -
C++basic--sizeof与strlen
sizeof与普通变量char str[]="cumt";char* p=str;int n=10;sizeof(str);//5sizeof(p);//4sizeof(n);//4void func(char c[10]){ sizeof(c);//4}void* a=malloc(10);sizeof(a);//4sizeof(str)=strlen(str)+1指针大小为4整型大小为4数组是"传址"的,指针大小为432位系统下无论何种指针大小都为4sizeo原创 2020-08-06 20:25:22 · 114 阅读 · 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 · 355 阅读 · 0 评论 -
C++basic--static
staticstatic关键字可以修饰不同的类型,如普通变量,普通函数,成员变量,成员函数.修饰不同的类型具有不同的含义.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 · 99 阅读 · 0 评论 -
C++basic--const
constconst用于限定一个变量为只读。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 · 101 阅读 · 0 评论 -
C++basic--assert
assertassert断言,是宏.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 · 122 阅读 · 0 评论 -
C++basic--enum
enumenum可创建符号常量.enum与枚举enum定义的新类型称为枚举.其语法类似于structenum 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 · 103 阅读 · 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 · 132 阅读 · 0 评论