- 博客(38)
- 收藏
- 关注
原创 虚构造函数
如果类被设计成能被继承,析构函数必须是虚函数。否则可以不为虚函数。析构函数写成虚函数主要是为了在实现多态时不造成内存泄露。class A { public: A() {cout<<"A Constructor\n";} virtual ~A() {cout<<"A Destructor\n";} }; class B:public A { pu
2012-09-25 10:14:06 752
原创 什么时候调用拷贝构造函数
以下几种情况会调用拷贝构造函数1. 以一个对象初始化另一个对象2. 函数以某个对象为参数3. 函数返回某个对象4. 初始化序列式容器的元素[cpp] view plaincopy#include #include using namespace std; class tes
2012-09-15 20:31:52 1922
转载 数组取址 和 ptr[-1]
int a[5]={1,2,3,4,5};// 数组a的内存布局(16进制):01000000 02000000 03000000 04000000 05000000int *ptr1=(int *)(&a+1);// a本身就为一个数组的地址,其值=&a[0],即数组第一个元素的地址,对a再取址// &a = a,似乎没什么不同,其实这里发生了对齐变更,a+1的对齐是以int
2012-09-03 13:06:53 405
转载 关系数据库系统与面向对象数据库系统各自的优缺点
①关系数据库系统的优点a.灵活性和建库的简单性:从软件开发的前景来看,用户与关系数据库编程之间的接口是灵活与友好的。目前在多数RDDMS产品中使用标准查询语言SQL,允许用户几乎毫无差别地从一个产品到另一个产品存取信息。与关系数据库接口的应用软件具有相似的程序访问机制,提供大量标准的数据存取方法。b.结构简单:从数据建模的前景看,关系数据库具有相当简单的结构(元组),可为用户或程序
2012-08-29 21:13:03 5434
转载 static成员必须在类外初始化
转:http://www.cnblogs.com/graphics/archive/2010/07/16/1778743.html为什么static成员必须在类外初始化为什么静态成员不能在类内初始化在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样class A{ private: sta
2012-08-29 20:56:15 22301 8
转载 extern “C”总结 C++中的explicit关键字
http://www.cnblogs.com/graphics/archive/2010/12/24/1916343.htmlC++中的explicit关键字http://www.cnblogs.com/graphics/archive/2010/08/05/1792749.html
2012-08-29 20:48:40 891
转载 字符串的排列输出 和组合输出
字符串排列:[cpp] view plaincopy#include #include using namespace std; template typename T> /* 把升序的排列(当然,也可以实现为降序)作为当前排列开始,然后依次计算当前排列的下一个字典序排列。 对当前排列
2012-08-20 20:29:25 713
原创 关于空类 含有虚函数类 占有空间大小
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3757411
2012-08-19 21:59:02 1326
转载 strcpy、sprintf、memcpy的区别
1、char *strcpy(char *des, char *src); 其操作对象是字符串,完成从源字符串到目的字符串的拷贝。2、int sprintf(char *buffer, const char *format, ...); 其操作对象不限于字符串,源对象可以是其他基本数据类型变量。 这个函数可以用来实现非字符串的基本数据
2012-08-19 21:36:19 527
原创 * ++ 的优先级
*p++ = *(p++) ++ 的优先级大于*main(){ char *ptr = ” Cisco Systems”; *ptr++; printf(“%sn”,ptr);} 这个函数能运行main(){ char *ptr = ” Cisco Systems”; (*ptr)++; printf(“%sn”,ptr); }
2012-08-19 21:07:58 295
原创 在有符号和无符号的操作中 自动转换成无符号
1、在有符号和无符号的操作中 自动转换成无符号void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6) puts("> 6") :puts("}-20变成了一个非常大的正整数,所以该表达式计算出的结果大于62、c语言词法分析采用的是贪心法,即每一个符号必须包括尽可能多的字符,所以对于a+++++b
2012-08-19 20:21:30 404
原创 BOOL,int,float,指针类型的变量a 与“零”的比较语句
BOOL : if ( !a ) or if(a)int : if ( a == 0)float: if ( a 0.000001&& a >-0.000001)pointer : if ( a != NULL) or if(a == NULL)
2012-08-19 16:17:33 628
转载 一关于引用的面试题
string foo( );void bar(string & s);那么下面的表达式将是非法的:bar(foo( ));bar("hello world");原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。
2012-08-19 14:36:59 281
转载 C语言中如何使用宏 包括单双井号 可变参数
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) /
2012-08-08 21:18:37 2368
原创 分治法
1、归并排序//将有二个有序数列a[first...mid]和a[mid...last]合并。void mergearray(int a[], int first, int mid, int last, int temp[]){ int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while (i
2012-08-08 18:41:22 543
原创 浮点类型和0比较
浮点型数据直接和0用>=,float的精度是6位,即精确到小数点后第五位,所以应该使用其精确位0.00001;同理双精度小数其精度为15位,精确到小数点后第14位。float型数据与0的比较 if(x>-0.00001&&x
2012-08-04 15:37:53 774
转载 揭秘 typedef四用途与两陷阱
转自:http://niehan.blog.techweb.com.cn/archives/325.html typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这
2012-08-01 14:09:49 834
转载 const在c/c++中的区别
C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码:#include using namespace std;int main(){ const int a = 1; const int b = 2; int array[ a + b ] = {0}; f
2012-08-01 09:56:48 649
转载 关于数组的几道面试题
转自:http://www.cnblogs.com/graphics/archive/2010/08/24/1761620.html#link042011年2月15日更新,加入找出绝对值最小的元素一题数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果有好的题目,随
2012-07-25 22:51:41 574
转载 sizeof详解
1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value
2012-07-25 14:07:02 582
转载 sizeof面试题选----Linux C编程实战
结构体和共用体的内存分配是C语言的一个难点,也是面试题中的热点。示例1:Union data1{double d;int i;char c1;char c2[9]; }; sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占
2012-07-25 13:51:23 616
原创 判断大端小端
int checkCPU( ){ { union w { int a; char b; } c; c.a = 1; return(c.b ==1); }} int i = 1
2012-07-25 00:06:27 845
原创 私有地址
A类 10.0.0.0 --10.255.255.255B类 172.16.0.0--172.31.255.255C类 192.168.0.0--192.168.255.255
2012-07-24 17:43:57 314
原创 交换函数几种写法
void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}void swap(int *a,int *b){*a=*a+*b;*b=*a-*b;*a=*a-*b;}//这样写 不严谨 可能产生溢出void swap(int *a,int *b){//这样 也不严谨 如果 两个数相等 异或之后会是0 *
2012-07-22 17:32:30 398
转载 轻松搞定面试中的链表题目
链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey
2012-07-22 14:06:34 908
原创 两个链表有序 合并成一个链表
1、递归实现Node * Merge(Node *head1 , Node *head2){if ( head1 == NULL )return head2 ;if ( head2 == NULL)return head1 ;Node *head = NULL ;if ( head1->data data ){head = head1 ;head->next = Mer
2012-07-22 13:38:35 945
转载 链表面试题小结
某本书上面说了,链表这个东西,实际用的并不多,但是可以提供很好的考察面试者编程技巧和思维能力的素材。这里总结一下,见过的面试题和对应的候选解法。题一、 给定单链表,检测是否有环。 使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。http:/
2012-07-22 10:35:07 404
原创 linux下文件和目录颜色代表的意思
白色-----------------------------------------普通文件蓝色------------------------------------------目录绿色------------------------------------------可执行文件红色------------------------------------------压缩文件浅蓝
2012-07-21 22:00:08 626
转载 c++中static的作用
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一 个问题:如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容
2012-07-19 18:57:38 531
转载 局部变量、全局变量、静态变量
静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。 由此看来, 一个变量可由sta
2012-07-19 18:46:52 270
原创 new malloc的区别
1、一个是C++的操作符,一个是C的库函数2、一个在自由存储区分配,一个在堆上分配3、一个分配内存并作初始化即调用构造函数,一个只是分配内存4、一个返回的指针有类型信息,一个没有事void5、二者都可以检测出内存泄露,但前者可以指出是那个文件的哪一行
2012-07-19 17:49:07 259
转载 堆、栈及其区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态
2012-07-19 17:15:13 371
转载 内存对齐的规则以及作用
首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ;10 int b ;11 short c ;12 };13 14 struct st
2012-07-19 17:10:47 240
原创 内存对齐
struct A { char b; int a; short c; };sizeof(A)=1+3+4+2+2=12; 3、2 为编译器自动填充,填3是为了数据成员对齐,填2是为了结构体本身对齐。struct A { short c; char b; int a; };sizeof(A)=2+1
2012-07-19 17:03:32 182
转载 数据库范式
所谓第一范式就是指表中的所有字段都是原子的、不可再分的。第二范式是满足属性对主键是完全函数依赖的,因此,满足第二范式的表当然也是满足第一范式的,第二范式的目的就是消除表中的部分依赖。 第三范式是指在满足第二范式的情况下,消除表中的传递依赖。
2012-07-13 18:03:04 179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人