C/C++
文章平均质量分 63
cxh342968816
这个作者很懒,什么都没留下…
展开
-
c++静态成员小结,c++,static
类中的静态成员真是个让人爱恨交加的特性。我曾经在面试时,被主考官抓住这个问题一阵穷追猛打,直把我问的面红耳赤,败下阵来。所以回来之后,我痛定思痛,决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点转载 2010-12-02 12:10:00 · 596 阅读 · 0 评论 -
内存分配详解、指针与数组[C++][内存管理]
<br />程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。<br /><br /> 内存分配方式 <br /><br /> (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。<br /> (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以转载 2011-05-11 10:57:00 · 503 阅读 · 0 评论 -
C++ Primer学习笔记
<br />http://blogold.chinaunix.net/u/18517/showart_241158.html<br /> <br />http://blog.csdn.net/nx500原创 2011-04-11 21:16:00 · 387 阅读 · 0 评论 -
出现频率最高的笔试题strcpy写法
<br />题目: <br /> 已知strcpy函数的原型是: <br /> char * strcpy(char * strDest,const char * strSrc); <br /> 1.不调用库函数,实现strcpy函数。 <br /> 2.解释为什么要返回char *。 <br /><br /> 解说: <br /> 1.strcpy的实现代码 <br /><br /> char * strcpy(char * strDest,con转载 2011-04-11 21:13:00 · 484 阅读 · 0 评论 -
C++学习笔记之实现句柄类
<br />C++初学者可能不知道句柄类为何物。其实说白了,句柄类就是为了消除来自同一个基类的派生类的操作差异性而建立的一个中间层,它管理了这些派生类的指针,消除了各种派生类建立和使用的不一致性。<br /><br />我为了建立句柄类,首先要找一个适合并且容易用OOP实现的东西,后来就想到了GUI,于是我就设计了一个按钮的类族,建立了三个简单的类,分别为Button类,CommandButton类,ImageButton类。Button类是所有按钮类的基类,而CommandButton和ImageButt转载 2011-04-15 11:07:00 · 1002 阅读 · 0 评论 -
Effective C++学习
<br />http://www.cppblog.com/xczhang/category/5750.html原创 2011-04-22 21:49:00 · 352 阅读 · 0 评论 -
C++虚函数表解析
<br /> <br /> <br /> C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 <br />关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我转载 2011-04-22 21:39:00 · 368 阅读 · 0 评论 -
C++ STL学习
<br />STL概述<br />STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。<br /><br /> <br />要点<br />STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。<br />STL另一个重要特性是它不是面向对象的。为了具有足够通用性,STL主要依赖于模板而不是封装转载 2011-04-26 15:46:00 · 458 阅读 · 0 评论 -
c++位运算
什么是位(bit)? 很简单,位(bit)就是单个的0或1,位是我们在计算机上所作一切的基础。计算机上的所有数据都是用位来存储的。一个字节(BYTE)由八个位组成,一个字(WORD)是二个字节或十六位,一个双字(DWORD)是二个字(WORDS)或三十二位。如下所示: 0转载 2011-07-21 19:58:56 · 477 阅读 · 0 评论 -
2.设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1) 借助辅助栈,保存最小值,且随时更新辅助栈中的元素。如先后,push 2 6 4 1 5stack A stack B(辅助栈)4原创 2011-07-03 19:00:14 · 371 阅读 · 0 评论 -
atof(),atoi(),itoa(),sprintf()等用法总结
这几个都是C语言中原有的字符格式转换函数,包含在头文件或中,C++自然而然地也把它们加进来了。一、 atof()头文件#include/include原型:double atof(const char *nptr);作用:把字符串转换成浮点数,直至遇到第一个空格。 二、 itoa转载 2011-07-23 12:35:20 · 25100 阅读 · 1 评论 -
45.递减左旋数列中查找一个数
题目:一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}克移两位形成的,在这种数组中查找某一个数。 思路:在此序列不断二分的过程中,由于原序列是一个递减序列经过旋转得到的,将它从任何位置分开,都会得到两个序列,其中一个是原创 2011-08-09 14:55:16 · 1907 阅读 · 0 评论 -
指针的概念、C指针声明解读之左右法则
<br />指针的概念<br /><br /> 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值(也叫指针所指向的内存区)、指针本身所占据的内存区,让我们分别说明。 <br />先声明几个指针放着做例子: <br /> 例一: <br /> (1)int*ptr; <br /> (2)char*ptr; <br /> (3)int**ptr; <br /> (4)int(*ptr)[3]; <转载 2011-03-10 21:53:00 · 583 阅读 · 0 评论 -
关于FILE指针 使用
<br />语言文件系统称为流文件(Stream),正文流(正文文件),二进制流(二进制文件)缓冲与非缓冲文件顺序操作文件与随机操作文件顺序文件:读/写第K个数据块之前必须读/写第1至K-1个数据块;随机文件:可直接读/写第K个数据块;正文文件的操作一般是顺序文件;二进制文件的操作都是随机文件。<br /><br /><br />一、文件操作的一般过程<br />定义文件指针 FILE *<br />打开文件 fopen<br />对文件进行读写<br /><br />二、系统已定义的与文件操作有关的数据结转载 2011-03-09 10:23:00 · 892 阅读 · 0 评论 -
学习C++:实践者的方法
<br />By 刘未鹏(pongba) <br />C++的罗浮宫(http://blog.csdn.net/pongba) <br /><br />前言<br />我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式原创 2011-03-10 10:34:00 · 626 阅读 · 0 评论 -
C++虚析构函数
<br />C++开发的时候,用来做基类的类的析构函数一般都是虚函数。如下两个类: class ClxBase<br />{<br />public:<br /> ClxBase() {};<br /> virtual~ClxBase() {};<br /><br /> virtualvoid DoSomething() { cout <<"Do something in class ClxBase!"<< endl; };<br />};<br /><br />class ClxDer转载 2010-12-05 15:40:00 · 433 阅读 · 0 评论 -
*&,**
<br />现在假设你想要在func1中修改p的值。这是你的权利。调用者传入一个指针,然后函数给这个指针赋值。以往一般都是传双指针,即指针的指针,例如,CMyClass**。 MYCLASS* p = NULL; func1(&p); void func1(MYCLASS** pMyClass); { *pMyClass = new MYCLASS; …… } <br /转载 2010-12-05 15:52:00 · 464 阅读 · 0 评论 -
关于static成员变量
一直以为对static成员变量还算了解。直到昨晚看了《Effective C++》3rd Item49,才发现自己其实什么都不懂,真是惭愧!所以写下这篇随笔,为以后定期回顾参考,也希望大家不要犯类似的错误。先看以下代码:#include using namespace std;class Base{ static int itest;public: void Set(){ itest++;转载 2010-12-02 12:18:00 · 2966 阅读 · 0 评论 -
函数引用形参问题
<br />class Derived:public Base<br />{<br />public:<br /> Derived(int i=0,double j=0.0,string s =""):Base(i,j),str(s){}<br /> <br />…………<br />……^<br />…………<br /> <br /> <br /> <br />int _tmain(int argc, _TCHAR* argv[])<br />{<br /> <br /> Derived de(1,1.1,原创 2010-12-05 14:56:00 · 715 阅读 · 0 评论 -
char a[]和char* a
<br />问题引入:<br />在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内<br />容程序是会崩溃的,而后者完全正确。<br />程序演示:<br />测试环境Devc++<br />代码<br />#include <iostream><br />using namespace std;<br />main()<br />{<br /> char *c1 = "abc";<br /> char c2[] =转载 2010-12-13 16:59:00 · 1467 阅读 · 0 评论 -
天龙八部之算法
那老僧道:“居士全副精神贯注在攻击、破解典籍之上,心无旁鹜,自然瞧不见老僧。记得居士第一晚来阁中借阅的,是一本《黑客攻击十八法》,唉!从那晚起,居士便入了魔道,可惜,可惜!” 老僧又道:“居士第二次来借阁的,是一本《软件破解大全》。当时老僧暗暗汉息,知道居士由此入魔,愈隐愈深,心中不忍,在居士惯常取书之处,放了一部《算法导论》一部《计算机程序设计艺术》,只盼居士能借了去,研读参悟。不料居士沉迷于破解攻击之道,于正宗宝典却置之不理,将这两部宝书撇在一旁,找到一册《DDoS实战》,却欢喜鼓舞而去。唉,沉迷苦海转载 2010-12-17 12:49:00 · 738 阅读 · 0 评论 -
C++容器类的简单介绍(转帖)
一、原型与构造函数Vector的原型可定义为vector >其构造函数为vector() //空的vector(al) //指定一种allocatorvector(n) //用默认T()初始化n个元素vector(n, val) //用Val初始化n个元素vector(n,val,al) //用val初始化n个元素,用al做分配器vector(first,last) //从己有的first到last复制生成vecto原创 2010-11-25 10:35:00 · 344 阅读 · 0 评论 -
C++容器类的简单介绍续(转帖)
5.unique操作// list::unique#include #include #include using namespace std;// a binary predicate implemented as a function:bool same_integral_part (double first, double second){ return ( int(first)==int(second) ); }// a binary predicate implemented as a class转载 2010-11-25 10:44:00 · 378 阅读 · 0 评论 -
C++ Primer学习笔记——$10 关联容器
5.unique操作// list::unique#include #include #include using namespace std;// a binary predicate implemented as a function:bool same_integral_part (double first, double second){ return ( int(first)==int(second) ); }// a binary predicate implemented as a class转载 2010-11-25 10:57:00 · 869 阅读 · 1 评论 -
C++复习 类
<br />类.类类型通常被称为抽象数据类型,抽象数据类型是面向对象编程和泛型编程的基础.<br /> 001 类就是定义了一个新的类型和新的作用域.<br /> 所有类成员必须在类的内部声明,一旦类定义完成后,就没有任何方式可以增加成员了.<br /> 创建一个类类型对象时,编译器会自动使用一个构造函数来初始化该对象.<br /> 构造函数一般应使用一个构造函数初始化列表来初始化对象的数据成员.<br /> Sales_item():units_sold(0)转载 2011-03-04 09:50:00 · 534 阅读 · 0 评论 -
c++变量在内存中的存储区域
<br />01 #include <iostream><br />02<br />03 #include <string><br />04 using namespace std;<br />05 int a = 0; // Initialization Area of Overall<br />06 char *p1; // Not Initialization Area of Overall<br />07<br />08 void main()<br />09 {<br />10 int b; //转载 2011-03-08 20:44:00 · 744 阅读 · 0 评论 -
内存对齐问题
一、内存对齐的原因大部分的参考资料都是如是说的:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为转载 2011-09-13 19:52:00 · 626 阅读 · 0 评论