随笔分类 - C++
摘要:方式使用场景 static_cast 基本数据类型之间的转换使用,例如float转int,int转char等;子类对象指针转换成父类对象指针也可以使用static_cast;在有类型指针和void*之间转换使用,不能使用static_cast在有类型指针之间进行类型转换。 dynamic_cast
阅读全文
摘要:LZ77 算法的基本流程。 1、从当前压缩位置开始,考察未编码的数据,并试图在滑动窗口中找出最长的匹配字符串,如果找到,则进行步骤 2,否则进行步骤 3。 2、输出三元符号组 ( off, len, c )。其中 off 为窗口中匹配字符串相对窗口边界的偏移,len 为可匹配的长度,c 为下一个字符
阅读全文
摘要:1.假设控件编号是IDC_EDIT1以下这段代码放到对话框的OnInitDialog函数最后::SendMessage( GetDlgItem(IDC_EDIT1)->GetSafeHwnd(), WM_SETFOCUS, NULL, NULL);即可2.打开对话框资源进行编辑(也就是你拖控件的那个界面)。 按下Ctrl+D你会发现资源上出现编号,那个编号就是Tab键按下时,控件的焦点顺序。 你需要把编辑框设置成编号1,方法是单击它,编号就自动修改了。这样,你的对话框运行后,编辑框没有禁用的话,它就是默认的焦点。
阅读全文
摘要:本篇博文来自于:http://www.cnblogs.com/fzhe/archive/2012/12/25/2832250.html 感谢该博主。一、基本概念1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。2、派生类的声明:class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n{ 派生类成员声明;};3、一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个基类,称为单继承。直接派生,间接派生。4、继承方式规定了如何访问基类继承的成员。继承方式有publ
阅读全文
摘要:在写程序是经常会遇到这种情况:需要统计某一个类的所有对象实例的个数。一个比较简单的方法是使用一个全局的变量,但是其缺点也是显而易见的。使用static成员可以很好的解决这个问题。相对与使用全局变量使用static成员有以下优势1) static成员是在类的作用域内,很好的避免了和其他全局变量重名的问题。2)可以实现封装,static成员在访问控制上和其他的成员一样可以为private2)可以很容易的看出变量的含义,和类的关联。是一种比较好的代码风格。在C++中定义和使用static成员与在Java和C#中有较大的区别。本人已经遇到过很多错误,这里总结下用法:一、static成员的声明和定义st
阅读全文
摘要:一、C++类成员的访问权限1. Public成员public成员为类和外部“通信”的“接口”,可以在类的外部调用,没有访问限制。2. Privatec成员与public相对,private为类的“私有”成员,主要是供类内部调用。外部可以通过public成员(函数)来与其“通信”(获取其值或更改)。除此之外,类的“友元”(friend)可以调用类的私有成员。3. protected成员protected成员的访问权限处于private和public中间,在类的外部不能调用类的protected成员,只有在类的内部或者类的派生类中调用。二、 C++中的继承“多态”是面向对象程序设计的“精髓”,C+
阅读全文
摘要:在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻辑模块修改后,就产生一个更新数据库的任务(produce),投递给IO模块任务队列,IO模块从任务队列中取出任务执行sql操作(consume)。 设计通用的任务队列,示例代码如下: 详细实现可参见: http://ffown.googlecode.com...
阅读全文
摘要:尽管C++ 野指针和内存泄漏一直被诟病,但是在实时性很强的应用场合,c++ 仍然是不二之选。游戏服务器开发仍然使用c++ 作为主语言,但是大多结合动态脚本技术,一方面规避了野指针和内存泄露,一方面获得了开发效率和扩展性的红利。但脚本技术不是本文的讨论重点,事实上关于c++ 与 lua的技术文章我也一直在整理中,将会另文别述。今天主要说说在使用c++过程中,如何避免和解决野指针和内存泄漏问题。野指针: 野指针的出现会导致程序崩溃,这是每个人都不愿意看到的。Linux会生成coredump文件,可用gdb分析。Win下可以注册unexception获取调用堆栈,将错误信息写到文件中。先分析一下通.
阅读全文
摘要:本文来自与:http://www.cnblogs.com/hxsyl/ 的博客 1 //正序打印自然数 0 -9 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 6 void fun(int begin,int end) 7 { 8 cout<<begin<<" "; 9 if(begin!=end)//写成begin<end会更好 10 fun(begin+1,end); 11 } 12 int main() 13 { 14 int
阅读全文
摘要:1、创建一个带头结点的单链表(头指针为head),输出链表中各结点的值;2、查找单链表中的第i个结点,并输出结点元素的值;3、在单链表中的第i个结点前插入一个结点值为e的正整数(从外部输入)4、删除单链表中的第j个结点;5、将单链表中的各结点就地逆序(不重建另外的一个链表);6、输出链表中所有元素7、将单链表中的负数移动到链表尾0、退出程序代码如下: 1 /* 2 *快速学习单链表的及其操作 3 *AUTHOR:CplusHua 4 *DATE:2012-10-28 DATE :2012-12-09 5 * 加入将链表中的元素移动到链表尾的功能 6 *Vertion:0.1.1 7 */ 8
阅读全文
摘要:1、c++变量初始化规则内置类型变量是否初始化决定于变量的定义位置,在函数体外定义的变量都自动初始化为0,函数体内定义的变量都不进行自动初始化。类类型变量的初始化,类通过定义一个或多个构造函数来控制类对对象的初始化,如果定义某个类的变量时没有提供初始化式,这个类就通过默认构造函数来实现。2、引用(reference)与指针(pointer)引用就是对象的另一个名字,通过在变量前添加&符号来定义。定义时必须初始化:int ival=1024;int &refval= ival;//OK:refval refers to ivalint &refval;//error:a
阅读全文

浙公网安备 33010602011771号