c++
文章平均质量分 53
问路1
这个作者很懒,什么都没留下…
展开
-
new的用法
new一共有3种用法第一种:new string *ps=new string("abc");//申请内存,并初始化对象第二种:operator newvoid *buffer=operator new(sizeof(string));//只申请内存第三种:placement newbuffer=new(buffer)string("abc");//利用给定的内存,初始化原创 2017-04-06 16:25:08 · 609 阅读 · 0 评论 -
关于printf("%d,%d",i--,i++)的问题
首先看几种情况1、 int i=1; printf("%d,%d\n",i--,i++);运行结果为:2,1这与编译器有关,通过汇编可以很清楚的看到第一步:把i的值存入缓存器[ebp-0E8h]=1;第二步:i值加1,i=i+1=2;第三步:把i的值存入缓存器[ebp-0ECh]=2;第四步:i值加1,i=i-1=1;第五步:把缓存器[ebp-0E8h原创 2017-08-29 22:20:17 · 29886 阅读 · 5 评论 -
关于开方sqrt的优化算法
float sqrt(float x){ if(x==0) return 0; float result=x; float xhalf=0.5f*result; int i=*(int*)&result; i=0x5f375a86-(i>>1); result=*(float*)&i; result=result*(1.5f-xhalf*result*result); r转载 2017-08-28 17:56:30 · 2022 阅读 · 0 评论 -
bit的置位,复位与测试
在C++中,有bitset类,可以作为bit的使用,下面进行如何利用32位的int型整数来进行位操作首先声明需要存放的位数:#define N 10000000每一个int存放32位#define BITSPERWORD 32#define SHIFT 5#defien MASK 0x1f存的内存空间int a[1+N/BITSPERWORD]voi原创 2017-07-19 11:43:56 · 1750 阅读 · 0 评论 -
二叉树的所有路径
void printArray(vectorArr) { int i; for (i = 0; i < Arr.size(); i++) printf("%d ", Arr[i]); printf("\n"); } void findPaths(TreeNode *data,vector path){ path.push_back(data->val);原创 2017-06-26 20:43:17 · 2922 阅读 · 0 评论 -
类的动态分配内存与释放
在对类进行实例化时也许会批量申请例如,申请10个Account实例,Account *buf=new Account[10];//申请内存,并调用默认构造函数for(int i=0;i<10;i++) new(buf+i) Account("ab",i);调用用具有两个参数的构造函数,在原来的内存上上面的两次调用构造函数,只能有一个进行_name的内存的动态分配,否则两次的 动态分原创 2017-07-12 22:18:27 · 625 阅读 · 0 评论 -
类的指针成员释放
class Account{public: Account(){ _name=0;_num=0;} Account(const char *p,int num=3); Account(const Account&); char* GetName(){return _name;} ~Account();private: char *_name; int _num;};inl原创 2017-07-12 20:12:34 · 2757 阅读 · 0 评论 -
关于sort的比较函数的static 声明
在进行编写sort函数的比较函数时, bool compare(string str1,string str2){ string comp1=str1+str2; string comp2=str2+str1; return comp1 }只是简单的外部声明,也没有类的引用,在VS上运行时正确,但原创 2017-06-22 22:39:26 · 2391 阅读 · 2 评论 -
poco-1.7.8p2-all安装
sudo apt-get install libpcap0.8-dev sudo apt-get install libtool./configure --shared --no-tests --no-samples --omit=Data/MySQL,Data/ODBC,Crypto,PageCompiler,PageCompiler/File2Page,NetSSL_Ope原创 2017-05-03 15:58:03 · 469 阅读 · 0 评论 -
二叉树的插入函数
BinaryTree Inseart(int num[],int length){ if(num==NULL||length<=0) return NULL; BinaryTree pRoot; BinaryTreeNode *node=(BinaryTreeNode*)malloc(sizeof(BinaryTreeNode)); node->原创 2017-04-19 16:57:05 · 940 阅读 · 0 评论 -
析构函数是否应该标记为虚函数
先看代码我们可以发现,两种方式的不同,第一种是调用派生类的构造函数,没有进行类型转化,new和delete的顺序与调用构造函数与析构函数的顺序一样。第二种方式存在派生类向基类的自动转换,在delete后,只调用了基类的析构函数。为什么呢?继承中析构函数必须是虚函数原创 2017-04-11 20:49:52 · 360 阅读 · 0 评论 -
什么是dynamic_cast static_cast
static_cast与dynamic_cast只知道是基类与派生类的转化关系,但具体是什么的?派生类也包括基类部分,这说明派生类可以像基类一样在派生类对象上执行操作,因为派生类也有基类的性质,所以存在派生类引用到基类类型引用的类型转换,即可以将派生类的引用转化成基类子对象的引用。基类类型的对象可以作为独立的对象存在,也可以作为派生类对象的一部分存在,因此一个基类对象可能是也可能不是一个派原创 2017-04-11 17:24:03 · 247 阅读 · 0 评论 -
结构体的位域(变量+冒号)
先看例子:1、typedef struct{ unsigned int a:4; unsigned int :0; char b:1; char c:7; unsigned int e:28; unsigned int f:4;}Test;a的长度为4bits,是uint型的,如果Test.a=16,由于超过范围,所以溢出,a=0; 偏移量为0:0的意思是补齐,就是第一原创 2017-08-30 17:51:11 · 612 阅读 · 0 评论