C++
zhaofuguang
这个作者很懒,什么都没留下…
展开
-
POSIX 标准头文件
POSIX 标准头文件原创 2020-05-19 14:57:27 · 755 阅读 · 0 评论 -
类的大小和其成员函数(非虚)没有关系
我们先来看看类的内存结构吧: class A { int a; public: op(int value){a=value;}; int read(){retu原创 2013-10-18 14:51:12 · 692 阅读 · 0 评论 -
常见Hash算法
4人收藏此文章, 我要收藏发表于1年前 , 已有230次阅读 共0个评论Java代码 /* ************************************************************************** *原创 2013-10-18 14:55:12 · 546 阅读 · 0 评论 -
继承中多态和拷贝构造函数
示例一:继承中多态和拷贝构造函数 注 意: (1) 每个类只能有一个析构函数。析构时,拷贝构造函数也会被析构。 (2) 析构与构造的顺序正好相反。 (3) 如果类中显式定义了拷贝构造函数和赋值函数,系统就不会使用默认的拷贝构造函数和赋值函数。 (4) 如果基类中定义了虚函数,当使用指向基类的指针访问派生类时会产生动态绑定,产生多态现象。当删除该基指针时,会调用基类的原创 2013-10-18 14:51:01 · 542 阅读 · 0 评论 -
多重继承与虚基类
原文地址:http://cpp.ysu.edu.cn/jichu/pslyjc.htm 多重继承 前面我们介绍的派生类只有一个基类,称为单基派生或单一继承。在实际运用中,我们经常需要派生类同时具有多个基类,这种方法称为多基派生或多重继承。 2.1 多重继承的声明: 在 C++ 中,声明具有两个以上基类的派生类与声明单基派生类的形式类似,只需将要继承的多个基类用逗号分开即可。 在多重继承中,公有派原创 2013-10-18 14:51:21 · 671 阅读 · 0 评论 -
什么时候会用到拷贝构造函数?
摘自:http://blog.csdn.net/zdl1016/archive/2006/07/12/909366.aspx 1-什么时候会用到拷贝构造函数? 2-什么时候有必要手动写拷贝构造函数? 1-什么时候会用到拷贝构造函数? 当任何你想复印东西的时候,而不管东西被复印成什么样子。即任何你想利用一个已有的类实例给另一个类实例赋值时,这种赋值可能是显式的,也可能是隐式的显式:原创 2013-10-18 14:51:51 · 566 阅读 · 0 评论 -
C++高质量编程点滴
摘自:http://www.sudu.cn/info/html/edu/C/20070103/236588.html 一、你需要一个函数将一个数组赋值为等差数列,并将会在函数的外部使用他。 不合理: int *GetArray( int n ) { int *p = new int[n]; for ( int i = 0; i { p[i原创 2013-10-18 14:51:57 · 381 阅读 · 0 评论 -
连接器和加载器 之 连接和加载
原文出处: http://www.cstc.net.cn/docs/docs.php?id=317 [内容] 连接器和加载器都做些什么? 地址绑定:一个历史性观点 连接 VS 加载 两遍连接 目标代码库 重定位和代码修正 编译器驱动器 连接器命令语言 连接:一个真实的例子 练习 连接器和加载器都做些什么? 任何连接器或加载器的基本工作都很多简单:将更加抽象的名字绑定(b原创 2013-10-18 14:52:02 · 1004 阅读 · 0 评论 -
用rand()和srand()产生伪随机数的方法总结
摘自:http://bbs.gameres.com/showthread.asp?threadid=71572 标准库(被包含于中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed);参数se原创 2013-10-18 14:52:11 · 386 阅读 · 0 评论 -
使用random_shuffle()算法随机化序列元素
摘自:http://www.vckbase.com/document/viewdoc/?id=1699 使用random_shuffle()算法随机化序列元素 作者:赵湘宁 假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。首先,做格式化时,结果常常是扭曲的,所以得不到正确的随机数(原创 2013-10-18 14:52:16 · 1260 阅读 · 0 评论 -
Windows程序的入口是哪里?写出Windows消息机制的流程
Windows程序的入口是WinMain()函数。 Windows应用程序消息处理机制: A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中 B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。 C. 应用程序调用DispatchMessage,将消息回传给操作系统。 D. 系统利用WNDCLAS原创 2013-10-18 14:53:43 · 1707 阅读 · 0 评论 -
判断链表是否带环
判断链表是否带环2009-08-28 16:18有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则f原创 2013-10-18 14:53:20 · 430 阅读 · 0 评论 -
c++经典书藉
c++经典书藉2008-08-25 14:11这是本人总结的一些认为C++比较经典的书籍,希望对大家有用 下面链接好像失效了,新发一个: www.it689.net/Webs/Books/List.aspx Thinking in C++ C++编程思想 C++入门书籍,不多介绍 http://www.laixp.cn/soft/sort01/sort02/down-12215.html原创 2013-10-18 14:51:19 · 360 阅读 · 0 评论 -
理解虚基类、虚函数与纯虚函数的概念
引用:http://www.cnblogs.com/MS-Frank/archive/2008/01/16/1041310.html 理解虚基类、虚函数与纯虚函数的概念 引言 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要原创 2013-10-18 14:51:23 · 434 阅读 · 0 评论 -
深入探讨C++中的引用
摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。 关键词:引用,const,多态,指针 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理原创 2013-10-18 14:51:39 · 351 阅读 · 0 评论 -
求传入函数中的数组长度
摘自:http://blog.chinaunix.net/u2/75321/showart_1161698.html 一般来说数组传入函数里面后会退化为指针,sizeof则没有用了,所以一般都要多传入一个数组长度。但是还是有办法求长度的。下面三个方法的原理都是利用array-size函数把数组的长度骗取出来,而且利用&号过滤指针.template struct size{ static原创 2013-10-18 14:51:46 · 1816 阅读 · 0 评论 -
C++新手必问之头文件
经常在CSDN以及其他之类的技术论坛上问关于C++ 头文件的问题。提出这些问题的往往就是那些刚学C++的新手。当初我是菜鸟的时候也问过类似的问题。 现在来看看下面两个include: #include // 这个就是1998年标准化以后的标准头文件 #include // 这个就是标准化以前的头文件 更本质上的区别就是ios原创 2013-10-18 14:52:07 · 400 阅读 · 0 评论 -
const的小实验
关于const做了一个小实验: #include #include using namespace std; void swap(int& a,int& b){ int temp; temp = a; a = b; b = temp;} int main() { int a = 100; long b = 200L; const int& c = 200; //可以,但原创 2013-10-18 14:52:09 · 474 阅读 · 0 评论 -
C++堆、栈、自由存储区、全局/静态存储区和常量存储区
摘自http://blog.csdn.net/sws9999/archive/2008/07/25/2707347.aspx 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放原创 2013-10-18 14:52:43 · 450 阅读 · 0 评论 -
c++专题: const
1.1. 简述 const关键字的最初动机是取代预处理器 #define 进行值替代。用C语言进行程序设计时,预处理器可以不受限制地建立宏并用它来替代值。因为预处理器只做文本替代,它既没有类型检查思想,也没有类型检查工具,所以预处理器的值替代会产生一些微小而且往往是很难察觉而让程序员郁闷很久的问题,这些问题在C + +中可通过使用c o n s t而避免。之后const又被用于指针、函数变量、返原创 2013-10-18 14:53:13 · 313 阅读 · 0 评论 -
c++专题: static
在C和C + +中,s t a t i c都有两种基本的含义,并且这两种含义经常是互相有冲突的:1) 在固定的地址上分配,也就是说对象是在一个特殊的静态数据区上创建的,而不是每次函数调用时在堆栈上产生的。这也是静态存储的概念。2) 对一个特定的编译单位来说是本地的(就像我们在后面将要看到的,这在C + +中包括类的范围)。这里s t a t i c控制名字的可见性,所以这个名字在这个单元或类之外是原创 2013-10-18 14:53:15 · 308 阅读 · 0 评论 -
简明分析C/C++内存分配的解决方案
简明分析C/C++内存分配的解决方案http://developer.51cto.com 2008-12-01 09:09 佚名 Chinaitlab 我要评论(0)摘要:C/C++的内存分配是很费时的,更糟糕的是,随着时间的流逝,内存将形成碎片,所以一个应用程序的运行会越来越慢。本方将为您讲解C/C++的内存分配的解决方案。 标签:C C++内存分配 内存分配解决方案 C C++原创 2013-10-18 14:52:36 · 560 阅读 · 0 评论 -
类中的常量
类中的常量2008年03月14日 星期五 上午 00:21 有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const原创 2013-10-18 14:52:48 · 361 阅读 · 0 评论 -
glibc中malloc的详细解释
glibc中的malloc实现:The main properties of the algorithms are:* For large (>= 512 bytes) requests, it is a pure best-fit allocator, with ties normally decided via FIFO (i.e. least recently used转载 2014-06-30 19:50:46 · 518 阅读 · 0 评论 -
经典的String Hash算法
unsigned int RSHash( char * str){unsigned int b = 378551 ;unsigned int a = 63689 ;unsigned int hash = 0 ;while ( * str){hash = hash * a + ( * str ++ );a转载 2014-07-10 09:29:23 · 1562 阅读 · 0 评论 -
怎样算平均寻道时间
一个单片磁盘的旋转速率为7200rpm,一面上的磁道数是30000,每道扇区数是600,寻道时间是每横越百磁道用1ms.假定开始时磁头位于磁道0,收到一个存取随机磁道上随机扇区的请求.1,平均寻道时间为多少?2,平均旋转延迟是多少?3,一扇区的传送时间是多少?4,满足此请求的总的平均时间是多少?1、平均寻道时间应为全部寻道时间的一半,150ms2、转载 2014-08-06 09:46:13 · 23979 阅读 · 2 评论 -
C++继承中的内存布局
今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ O转载 2016-06-11 16:59:30 · 3532 阅读 · 0 评论 -
值得学习的C语言开源项目
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在Linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.c转载 2017-04-03 21:24:57 · 1162 阅读 · 0 评论 -
undefined reference问题总结
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1.转载 2017-06-01 20:17:29 · 660 阅读 · 0 评论 -
C++0x的右值和右值引用
这篇博文的原始地址在http://storming.github.io/libllpp/。我很想把自己的理解分享给大家,并且和大家一起讨论。这篇博文的内容只是我对这个概念的理解,并不是太严谨。右值和右值引用是c++0x引入的核心概念,在这段学习时间里对它的认知是个渐进的过程,每每认为自己理解它了,每每过段时间否定自己 的认知。到现在,我还是无法用准确的语言来描述它,这里我使用FAQ转载 2017-10-20 16:32:30 · 348 阅读 · 0 评论 -
linux系统编译C++程序时头文件和库文件搜索路径
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及 该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定转载 2013-10-21 16:45:58 · 2384 阅读 · 1 评论 -
标准I/O(buffered I/O)浅析
CU有很多上讨论I/O操作的帖子,在这里发一篇我自己关于标准I/O的理解的帖子这里借用了glibc中标准I/O实现的细节,所以代码多是不可移植的.写的有点乱,很多东西都是自己的理解,这里只是抛砖引玉,期望和大家多多讨论一下.1. buffered I/O, 即标准I/O首先,要明确,unbuffered I/O只是相对于buffered I/O,即标准I/O来说的.转载 2013-10-22 13:59:13 · 483 阅读 · 0 评论 -
C语言字节对齐详解
一、什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些原创 2013-10-18 14:55:09 · 398 阅读 · 0 评论 -
各种排序算法
另外连接:http://blog.csdn.net/fly_lb/category/368127.aspx 排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法 对算法本身的速度要求很高。 而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将 给出详细的说明。 对于排序的算法我想先做一点简单的介绍,也是给这篇文章理一个提纲。 我将按照原创 2013-10-18 14:52:57 · 293 阅读 · 0 评论 -
戏说Singleton模式
戏说Singleton模式 DragonCheng GOF著作中对Singleton模式的描述为:保证一个class只有一个实体(Instance),并为它提供一个全局访问点(global access point)。 从其描述来看,是非常简单的,但实现该模式却是复杂的。Singleton设计模式不存在一种所谓的“最佳”方案。需要根据当时的具体问题进行具体解决,下面将讲述在不同环境下的解决方原创 2013-10-18 14:53:18 · 451 阅读 · 0 评论 -
c中的移位操作
在普通的C编程里位运算的使用机会不是很多,所以常常被人遗忘.前天做学校的数据结构作业,题里需要求2的n次幂,正好用到左移,我就顺道把左,右移给复习了一遍.先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用int i = 1;i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100原创 2013-10-18 14:53:32 · 437 阅读 · 0 评论 -
类的构造顺序
class C{public: C() { cout } ~C() { cout } C(C &c) { cout }protected:private:};class A{public: A() { cout } ~A() { cout } A(A &a) { cout } virtual void Test() { cout }protected:private:原创 2013-10-18 14:53:34 · 823 阅读 · 0 评论 -
字符地址是否相等
void main() { char str1[]="abc"; char str2[]="abc"; const char str3[]="abc"; const char str4[]="abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "a原创 2013-10-18 14:53:36 · 548 阅读 · 0 评论 -
二进制转换时的最高位处理
unsigned short A = 10; printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c); 输出多少?这是题目给出的答案:第一题,~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285 第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以原创 2013-10-18 14:53:41 · 3259 阅读 · 0 评论 -
字母全排列快速算法C代码
全排列,比如字母ABC,所有排列有A ,AB,AC,ABC,ACB,B,BA,BC,BAC,BCA,C,CA,CB,CAB,CBA。 //原理是插入, 在一个字符串的所有位置插入新字符.//如: AB 插入C , 位置有 1A2B3, 插入后形成 CAB ACB ABC char *AllList(char *str, int *pNum)...{ int i, j, k, n;原创 2013-10-18 14:54:29 · 1287 阅读 · 0 评论