自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 缺省参数值是静态绑定的

class A{public: virtual void func(int val=1) { std::cout"<<val<<std:endl; } virtual void test() { func(); }};class B : public A{public: void func(int val=0) { std::cout"<<val<<std:

2016-06-24 20:32:20 621

原创 浅拷贝与深拷贝 拷贝控制总结

class A{ int i;};class B{ A *p;public: B(){p=new A;} ~B(){delete p;} /* B(const B &temp) { p=temp.p; } */};void sayHello(B x){}int main(){ B b; sayHello(b); return 0;}//程

2016-06-13 18:33:26 893

原创 线程

一组并发线程运行在一个进程的上下文中。每个线程都有它自己独立的线程上下文,包括线程ID、栈、栈指针、程序计数器、条件码和通用目的寄存器值。每个线程和其他线程一起共享进程上下文的剩余部分。这包括整个用户虚拟地址空间,它是由只读文本(代码)、读/写数据、堆以及所有的共享库代码和数据区域组成的。线程也共享同样的打开文件的集合。在多线程中不加限制的随意访问非static局部变量不会导致运算结果

2016-06-13 12:28:14 706

原创 volatile

volatile:易变的,不稳定的。volatile用来声明那些可能在你的程序本身不知道的情况下会发生改变的变量。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。对于一般变量:为提高存取速度,编译器优化时有时会先

2016-06-12 00:06:48 851

原创 构造函数的执行顺序

先执行基类的(如果基类当中有虚基类,要先执行虚基类的,都是按照继承时的顺序依次执行),再执行成员对象的(声明的顺序),最后执行自己的。(切记都不是初始化列表的顺序)

2016-06-12 00:02:43 1170

原创 运行时类型识别(RTTI)

实现RTTI的两个重要运算符:typeid:返回表达式的类型。dynamic_cast:用于将基类的指针或引用安全地转换成派生类的指针或引用。当我们将这两个运算符用于某种类型的指针或引用,并且该类型含有虚函数时,运算符将使用指针或者引用所绑定对象的动态类型。特别适用于此情况:我们想使用基类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。1

2016-06-09 19:18:19 595

原创 关于fork函数

//请问下面的程序一共输出多少个“-”?8个。int main(){ int i; for(i = 0;i<2;i++) { fork(); printf("-"); } return 0;}//一共调用了6次printf,但是会输出8个-。因为父进程的输出缓冲也会被子进程复制。//因为标准输出是行缓冲,程序遇到"\n"、EOF、文件描述符关闭、主动flush或程序退出

2016-06-08 22:57:31 640

原创 用户态切换到内核态的3种方式

1.系统调用2.异常3.外围设备的中断

2016-06-08 15:36:38 3081

原创 调用函数时栈的活动情况

//假设在一个32位little endian的机器上运行下面的程序,结果是多少?#include int main(){ long long a=1,b=2,c=3; printf("%d %d %d\n",a,b,c); return 0;}注: a.printf()是一个库函数,C和C++中函数的参数是从右往左入栈的。b.栈的生长方向是从高往低的。

2016-06-07 09:00:48 506

原创 快速幂

int power(int b,int e){ if(e==0) return 1; if(e%2==0) return power(b*b,e/2); return b*power(b*b,e/2); }//快速幂的实现程序,可以理解为幂数被转换为二进制形式,然后对位为1的逐位乘上去。 //例如2^5将5转换成二进制101,2^1*2^4简单点的实现方式可以这样:

2016-06-07 08:52:12 606

原创 通用多态(参数多态、包含多态)特定多态(重载多态、强制多态)

1.通用多态a.参数多态:模板。b.包含多态:virtual。2.特定多态a.重载多态:b.强制多态:强制类型转换。

2016-06-05 00:33:25 3177

原创 text data bss heap stack

1.text:已编译程序的机器代码。2.data:已初始化的全局C变量。3.bss:未初始化的全局C变量。在目标文件中这个节不占据实际的空间,它仅仅是一个占位符。目标文件格式区分初始化和未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间。4.heap:5.stack:

2016-06-04 16:14:31 798

原创 C/C++知识点汇总

1.C++中类对象的内存布局和占用空间:a.非静态成员变量总合。b.编译器为了CPU计算,作出的数据对齐处理(可用#pragma pack(n)来设定变量的对齐方式)。c.为了支持虚函数,产生的额外负担。//例子:#pragma pack(2)class BU{ int number; //4 union UBffer {

2016-06-04 10:58:03 1354

原创 巧妙计算一个数二进制表示法中1的位数

//巧妙计算一个数二进制表示法中1的位数。int fun(unsigned int n){ n=(n&0x55555555)+((n>>1)&0x55555555); n=(n&0x33333333)+((n>>2)&0x33333333); n=(n&0x0f0f0f0f)+((n>>4)&0x0f0f0f0f); n=(n&0x00ff00ff)+((n>>8)&0x00ff00f

2016-06-01 12:23:14 1067

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除