C/C++
胖奇
这个作者很懒,什么都没留下…
展开
-
Protocol Buffer Basics: C++中文翻译(Google Protocol Buffers中文教程)
Protocol Buffer Basics: C++(Protocol Buffer基础:C++篇)本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/)<br />This tutorial provides a basic C++ programmer's introduction to working with protocol buffers. By walking through creating转载 2011-03-02 15:20:00 · 1744 阅读 · 1 评论 -
C++中引用(&)的用法和应用实例
C++中引用(&)的用法和应用实例对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的转载 2013-04-01 16:34:25 · 580 阅读 · 0 评论 -
C++多态的实现原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包转载 2013-05-21 17:05:28 · 395 阅读 · 0 评论 -
memcpy实现及优化
1:函数原型void * memcpy ( void * destination, const void * source, size_t num );函数作用参考:http://www.cplusplus.com/reference/clibrary/cstring/memcpy/Copy block of memoryCopies the values of转载 2013-05-28 15:21:39 · 776 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a;转载 2013-05-28 16:17:28 · 374 阅读 · 0 评论 -
for循环中有多个限制结束条件的正确写法(小心逗号运算符)
for(i=a,j=b; id; i++,j--){....}这种写法其实是逗号运算符, id 结果就是 j>d的结果~~要想限制,必须要加上&&正确写法如下:for(i=a,j=b; id; i++,j--){....} 逗号运算符: 可用于将相关的表达式链接在一起。由于逗号链接表达式从左到右进行计算,因此最右边的表达转载 2013-07-18 08:46:34 · 3533 阅读 · 0 评论 -
vector,list,deque,set,map of STL
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要转载 2013-07-19 09:55:53 · 493 阅读 · 0 评论 -
STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存转载 2013-07-19 09:48:10 · 559 阅读 · 0 评论 -
大话设计模式之一:单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对象的关转载 2013-07-19 13:45:05 · 549 阅读 · 0 评论 -
Linux源码中的mktime算法解析
我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。 那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。 我们都知道我们的公历还是比较复杂的,有大月小月,有闰年非闰年,处理起来会很麻烦。 但是Linux的源代码仅仅用了短短的几行就完成了这个复杂的转换(Gauss算法)转载 2013-07-05 15:33:02 · 512 阅读 · 0 评论 -
Mutex vs. Semaphore, what is the difference?
Mutex vs. Semaphore, what is the difference?The Toilet Example (c) Copyright 2005, Niclas Winquist ;)Mutex:Is a key to a toilet. One person can have the key - occupy the toilet - at the tim转载 2013-08-28 14:43:22 · 528 阅读 · 0 评论 -
用C++ 设计一个不能被继承的类
题目:用C++ 设计一个不能被继承的类。分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++ 中,子类的构造函数会自动调用父类的构转载 2013-01-10 09:13:14 · 328 阅读 · 0 评论 -
约瑟夫问题:n个人围成一圈从1开始报号,报到m的出圈,直到最后1个人。
面试中的程序题,没有写出来,后来百度了一下,发现时计算机二级考试中的大题。一般有两种方法,1使用数组,对n个人的数组(初始化全为1)进行标记,报到m的标为0。2使用循环链表。int baoShu(int n,int m){ int flag,i,j=0; int *arr=(int *)malloc(n*sizeof(int)); for(i=0;i<n;i++)原创 2012-03-20 10:51:20 · 2052 阅读 · 0 评论 -
排序算法
1.冒泡排序 10个整数void maopao(int *list){ int i,j,temp; for(i=0;i<9;i++) for(j=0;j<9-i;j++) { if(list[j]<list[j+1]) { temp=list原创 2012-04-05 17:20:09 · 236 阅读 · 0 评论 -
程序员面试宝典之main()主函数结束之后
atexit( void (* function) (void) ) 一般程序执行到 main() 的结束就完成了, 如果想在程序结束时做一些事情, 可以尝试着用这个函数: atexit( void (* function) (void) )#include #include void f1(void){printf("exit f1\n");}void f转载 2012-02-09 13:09:28 · 500 阅读 · 0 评论 -
程序员面试宝典之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 o转载 2012-02-09 13:46:31 · 796 阅读 · 0 评论 -
华为面试
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指原创 2012-03-28 11:22:58 · 392 阅读 · 0 评论 -
一次遍历找出整型数组中第二大数
const int MIN=-32767;int find_sed_max(int data[],int count){ int max_num=data[0]; int sed_num=MIN; for(int i=1;i<count;i++) { if(data[i]>max_num) { sed_nu原创 2012-03-31 14:24:04 · 1634 阅读 · 0 评论 -
C++面试宝典2011
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要转载 2012-04-05 10:03:12 · 442 阅读 · 0 评论 -
编程实现位操作
1.对整型变量a,设置a的bit3,清楚a的bit3,保持其他位不变#define BIT3 (0x1<<3)static int a;void set_bit3(){ a |=BIT3;}void clear_bit3(){ a &=~BIT3}}2.把32位的unsigned int按位倒过来unsigned long reverse32(unsig原创 2012-04-05 15:33:23 · 339 阅读 · 0 评论 -
函数重写
重写strcpy函数char *strcpy1(char * str1, const char * str2){ assert((str1!=NULL)&&(str2!=NULL)); char *address =str1; while((*str++=*str2++)!=''); return address;}重写strlen函数原创 2012-04-01 17:25:34 · 418 阅读 · 0 评论 -
程序员面试:字符串相关问题
1.回文数判断:int huiwenNum(long num) {long result =0;long i=num;while(i>=0){result=result *10 +i%10;i=i/10;}if(result ==num)return 1;elsereturn 0;}2.回文字符串判断:int huiwen原创 2012-03-20 11:04:11 · 399 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 #includeusing namespace std;class ClxBase{转载 2013-08-30 14:08:22 · 568 阅读 · 0 评论