
C/C++
文章平均质量分 61
chenchong_219
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串按ACSII码排序
#include int main(){char s[10]="chenyxjko";char tem;for (int i=0;i{for (int j=1;j{if (s[j] {printf("%c,%c\n",s[j],s[j-1]);tem=s[j];s[j]=s[j-1];s[j-1]= tem;}} }print原创 2013-04-07 22:58:09 · 902 阅读 · 0 评论 -
六类qsort排序方法
六类qsort排序方法qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分发写的,其时间复杂度为n*log(n),其结构为:void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));其中:*base转载 2013-08-07 23:47:55 · 610 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
C++析构函数为什么要为虚函数注:本文内容来源于zhice163博文,感谢作者的整理。1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码转载 2013-10-25 23:07:31 · 548 阅读 · 0 评论 -
虚函数与非虚函数区别
非虚函数:#include "iostream.h"class A{public:void funA() { funB(); }void funB() { cout };class B: public A{public:void funB() { cout };void main(){B b;b.funA();}转载 2013-11-21 23:52:29 · 1142 阅读 · 0 评论 -
浅析C++中虚函数的调用及对象的内部布局
在我那篇《浅析C++中的this指针》中,我通过分析C++代码编译后生成的汇编代码来分析this指针的实现方法。这次我依然用分析C++代码编译后生成的汇编代码来说明C++中虚函数调用的实现方法,顺便也说明一下C++中的对象内部布局。下面所有的汇编代码都是用VC2005编译出来的。虽然,不同的编译器可能会编译出不同的结果,对象的内部布局也不尽相同;但是,只要是符合C++标准的编译器,编译结果和对象的转载 2013-12-01 22:35:11 · 723 阅读 · 0 评论 -
浅析C++中的this指针
有下面的一个简单的类:class CNullPointCall{public: static void Test1(); void Test2(); void Test3(int iTest); void Test4();private: static int m_iStatic; int m_iTest;};转载 2013-12-01 22:36:35 · 663 阅读 · 0 评论 -
继承 内存分布
class Base { public: int m_base; }; class DerivedA: public Base { public: int m_derivedA; }; class DerivedB: public Base { public: int m_derivedB; }; class Deriv转载 2014-05-08 22:36:21 · 1623 阅读 · 0 评论 -
学习c++的50条忠告
1.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发转载 2014-05-11 18:14:52 · 732 阅读 · 0 评论 -
ReadProcessMemory与WriteProcessMemory用例分析
首先介绍一个函数VirtualProtectEx,它用来改变一个进程的虚拟地址中特定页里的某一区域的保护属性,这句话有些咬嘴,直接从MSDN中翻译过来的,简单来说就是改变某一进程中虚拟地址的保护属性,如果以前是只读的,那改变属性为PAGE_EXECUTE_READWRITE后,就可以更改这部分内存了。具体看它的实现BOOL WINAPI VirtualProtectEx( _转载 2014-01-07 00:58:43 · 1658 阅读 · 0 评论 -
一个简单的固定长度内存池的实现
一个简单的内存池的实现j 当频繁地用malloc申请内存,然后再用free释放内存时,会存在两个主要问题。第一个问题是频繁的分配释放内存可能导致系统内存碎片过多;第二个问题是分配释放内存花费的时间可能比较多(这个问题不太明显)。这个时候我们就可以考虑使用内存池了。TAG: 内存池 当频繁地用malloc申请内转载 2014-06-01 17:45:11 · 3226 阅读 · 0 评论 -
编写高效的C++程序方法之使用对象池
对象池技术可以避免在程序的生命期中创建和删除大量对象。如果知道程序需要同一类型的大量对象,而且对象的生命周期都很短,就可以为这些对象创建一个池(pool)进行缓存。只要代码中需要一个对象,就可以向对象池请求.用完此对象时,要把它放回池中。对象池只创建一次对象,因此它们的构造函数只调用一次,而不是每次使用时都调用。因此,当构造函数要完成一些设置动作,而且这些设置可以应用与该对象的多次使用时,对象池就转载 2014-06-22 22:17:43 · 719 阅读 · 0 评论 -
虚函数底层实现机制
1、多态的实现机制 C++在基类中声明一个带关键之Virtual的函数,这个函数叫虚函数;它可以在该基类的派生类中被重新定义并被赋予另外一种处理功能。通过指向指向派生类的基类指针或引用调用虚函数,编译器可以根据指向对象的类型在运行时决定调用的目标函数。这就实现了多态。2、实例#includeusing namespace std;class Base{pu原创 2014-12-16 21:31:03 · 4536 阅读 · 0 评论 -
一般函数指针和类的成员函数指针
一般函数指针和类的成员函数指针转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数转载 2013-05-13 00:06:35 · 578 阅读 · 0 评论 -
C++在类中创建线程
1、使用_beginthread#include //sleep#include #include //_beginthreadusing namespace std;class A{public:A(){_beginthread(Agent, 0, (void*)this);}void run(){int i = 0;whil原创 2013-05-13 00:03:04 · 1292 阅读 · 0 评论 -
C语言——可变长参数
1、头文件 stdarg.h2、例子:求最大数/* bsearch example */#include /* printf */#include int maxn(size_t count,...){int n,big;va_list numbers;va_start(numbers,count);big = va_arg(numbers,原创 2013-05-10 22:43:10 · 637 阅读 · 0 评论 -
函数模板的声明和使用
函数模板的声明和使用1. 函数模板的声明template(参数表){ 函数体}2. 使用2.1templateT Add(T a, T b){ T c = a + b; return c;}int a, b;Add(a, b);// 上面的T经过编译器, 就编程int了(有一点像C中的宏).转载 2013-04-09 23:13:26 · 1190 阅读 · 0 评论 -
【C++ STL学习之六】STL算法之for_each
for_each()函数将调用者提供的操作施加于每一个元素身上。它既可以是非变动性算法,也可以说是变动性算法。[cpp] view plaincopyprint?template class InputIterator, class Function> Function for_each (InputIterator first,转载 2013-04-09 23:23:22 · 590 阅读 · 0 评论 -
【C++ STL学习之五】容器set和multiset探秘
一、set和multiset基础set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。需要包含头文件:#include set和multiset都是定义在std空间里的类模板:[cpp] view plaincopyprint?templatecla转载 2013-04-09 23:20:48 · 529 阅读 · 0 评论 -
【C++ STL学习之一】容器的共通能力和共通操作总结
一、C++ STL各容器有一些共通的能力其中三个最核心的能力是:(1)所有容器提供的是“value语意”而不是“reference语意”。容器进行元素的安插操作时,内部实施的是拷贝操作,存放的是元素的副本。因此容器的每一个元素必须能被拷贝。如果打算存放的对象不具备public 拷贝构造函数或者你要得不是对象的副本,那么容器元素只能是指针。(2)所有元素形成一转载 2013-04-09 23:17:30 · 725 阅读 · 0 评论 -
【C++ STL学习之三】容器deque深入学习
C++ STL容器deque和vector很类似,也是采用动态数组来管理元素。使用deque之前需包含头文件:#include 它是定义在命名空间std内的一个class template:templateclass _Ax = allocator >class deque;第一个template参数用来表示元素型别,第二个可转载 2013-04-09 23:19:37 · 545 阅读 · 0 评论 -
【C++ STL学习之四】容器list深入学习
一、list基础List使用一个双向链表来管理元素。图一显示了list的结构。图一 list的结构任何型别只要具备赋值和可拷贝两种性质,就可以作为list的元素。二、list的功能list的内部结构和vector和deque截然不同,在很多方面都表现不同:1、list不支持随机存取。所及既不提供下表操作符,也不提供at()函数转载 2013-04-09 23:22:03 · 534 阅读 · 0 评论 -
【C++ STL学习之二】容器vector大总结
一、容器vector头文件:#include二、vector的功能特点:(1)支持随即存取。 (2)在末端添加或删除元素,性能很好。但是在前段或者中部的话,性能较差。需要移动。注意:函数size()可以返回vector的大小,即vector中实际元素的个数。而capacity()返回容量。区别看下面的示例代码:转载 2013-04-09 23:18:43 · 770 阅读 · 0 评论 -
C++库函数查询网址
http://www.cplusplus.com/原创 2013-05-03 22:09:06 · 1932 阅读 · 0 评论 -
类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
呵呵,今天来好好看看着几个转换操作符的用法。以前老是看着眼熟,但是用着手生。今天决定搞定这些个东西。在C语言中类型转换有几种方式:1. (expression). 在表达式外边加括号,由编译器来决定怎么改变。2. new_type(expression). 强制类型括号住表达式。3. (new_type)expression. 括号住强制类型。4.转载 2013-05-05 22:07:32 · 505 阅读 · 0 评论 -
C++基本类型所占位数和取值范围
C++基本类型所占位数和取值范围:符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u原创 2013-05-09 23:15:37 · 587 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需原创 2013-05-10 20:47:27 · 464 阅读 · 0 评论 -
Effective C++学习笔记
一.让自己习惯C++ 条款01:视C++为一个语言联邦 为了更好的理解C++,我们将C++分解为四个主要次语言:C。说到底C++仍是以C为基础。区块,语句,预处理器,内置数据类型,数组,指针统统来自C。Object-Oreinted C++。这一部分是面向对象设计之古典守则在C++上的最直接实施。类,封装,继承,多态,virtual函数等等...Templ原创 2014-12-09 23:28:49 · 1223 阅读 · 1 评论