随笔分类 - [30]C++
-
C++ const && 二叉树合集
摘要:C++ const && 二叉树合集今天在回顾我以前写的笔记,笔记时间应该是在大二。话说,现在我在实验室一边听着胡彦斌的《葬英雄》一边写着学习笔记~ 看了以往的笔记,感觉,以前的字写的确实不怎么样,现在嘛,嘿嘿,也不怎么样。不过,感觉还是很不一样的。想想当初学习C++的辛苦,在看着现在写出来的程序,觉得自己还是进步了不少的。C++这门语言,应该算是最难学的语言了吧,我觉得汇编是比C++简单些的。 还有一点,对于一门语言是否精通,我觉得有个很简单的标准,简单的有点苛刻,就是,能否独立的制作这门语言的编译器。如果连编译器都做出来了,那绝对是精通的。你应该会认同吧? 回到正题。 之前 阅读全文
-
VC6.0到VS2013全部版本下载地址
摘要:VC6.0到VS2013全部版本下载地址Microsoft Visual Studio 6.0下载:英文版360云盘下载: http://l11.yunpan.cn/lk/sVeBLC3bhumrI英文版115网盘下载: http://115.com/file/bew2qrau英文版迅雷下载: http://61.138.140.18/download/jlste_nw/vs6en.isoFTP下载: ftp://211.69.16.66/microsoftvisualc++6.0.zip汉化补丁: http://www.verycd.com/topics/6... 阅读全文
-
Windows Socket 组件 HP-Socket v2.2.3
摘要:高性能 Windows Socket 组件 HP-Socket v2.2.3 正式发布 HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP 通信系统。HP-Socket 对通信层实现完全封装,上层应用不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到各类应用程序中;另外,为了让大家能更方便的学习 HP-Socket,特此精心制作了一个功能测试示例(Test Echo)一个性能测试示例(Te. 阅读全文
-
构造函数产生的点及原因
摘要:构造函数产生的点及原因我相信很多人对构造函数在什么时候产生,以及产生的原因,理解得不是很透彻;更有甚者认为默认构造函数和复制构造函数是一定会产生的,成员变量就应该在初始化参数列表中进行初始化,当然这些是初学者的认识,下面分享一下我的看法。构造函数不负责分配内存,只是在分配好的一块内存中进行赋值操作.这一点我们可以很容易从new/delete与malloc/free的区别中看出来,malloc/free只负责分配内存不负责初始化,而new/delete不仅负责分配内存,如果对象存在相应的够着函数,就会调用相应的构造函数,如果不存在当然就不调用,如int *i=new int[10];int类型没 阅读全文
-
服务端套接字类CxServerSocket的使用
摘要:服务端套接字类CxServerSocket的使用这是一个精练的服务端套接字类,类名、函数名和变量名均采用匈牙利命名法。小写的x代表我的姓氏首字母(谢欣能),个人习惯而已,如有雷同,纯属巧合。CxServerSocket的使用如下(以某个叫做CSomeClass的类的相关代码为例):一、声明服务端套接字对象实例。CxServerSocket m_ssLocalHost;二、设置服务端套接字事件通知方式。消息响应或回调函数,任选其一。服务端套接字事件有:接收到客户端的连接请求。void CSomeClass::PreSubclassWindow() { // TODO: Add your s... 阅读全文
-
局域网聊天软件(winsocket)
摘要:局域网聊天软件(winsocket)LANChat工作整理2013/8/22程序实现功能: 局域网聊天软件,启动即可找到在线设备,并能够进行简单的文字聊天。 其实下面这个框图已经说明了程序的绝大部分功能原理。核心类的程序框图我觉得,这个程序中使用的最好的技术,应该就是IOCP了。后面我会针对IOCP好好地写一篇博文,这个技术虽然刚学的时候有点乱,但是确实很好用。 上面的框图中中间的UDPServer线程等待的事件完成是MainServer线程在Listen函数调用结束后设置的事件。这里忘了标了。说明 前几天在实验室看《Windows网络与通信程序设计》这本书,看完了前5章吧,就觉得目前手头的技 阅读全文
-
OpenCascade
摘要:Hello World of OpenCascadeHelloWorldofOpenCascadeeryar@163.com摘要Abstract:以一个经典的HelloWorld程序为例开始对开源几何造型内核OpenCascade的学习。关键字KeyWords:OpenCascade、Qt、HelloWorld一、引言IntroductionOpenCascade编译成功后,看着大量的代码,无从下手。本文以HelloWorld程序为例,详细说明使用OpenCascade进行编程需要注意的事项,以便对OpenCascade做进一步学习。选择的编程工具为QtCreator,因为其也是开源的,其版本 阅读全文
-
effectiveC++ 内存管理 学习笔记
摘要:effectiveC++ 内存管理 学习笔记1.尽量使用初始化列表而不要再构造函数里赋值,初始化顺序和声明的顺序一致,一些类型如const,引用等,必须使用初始化。对于非内部数据类型成员对象应当采用初始化表,以获取更高的效率。example:B::B(const A& a):m_a(a){}只调用了类A的拷贝构造函数2.基类都使用虚析构函数,这样才能在使用多态时,准确的析构派生类3.operator>>和operator>或operatorname();}这样,person作为接口与实现完全分离。编译时不对name的改变产生依赖分类:C++ windows编程 阅读全文
-
CFileDialog类与16进制格式的dat文件
摘要:CFileDialog类与16进制格式的dat文件要将数据保存为.dat文件,而且是16进制的数字,怎么保存?要读取.dat文件,文件是16进制的,怎么读取?用CFileDialog类可以得到【保存】和【打开】的对话框,具体怎么保存和读取,需要我们自己写代码了。这里,和大家分享一下,怎么保存16进制的文件到.dat中?怎样从.dat中读取你保存的16进制数字?对于读取到的这些数据,你想做什么,可以因人而异。您可以在看懂本篇文章的基础上,举一反三。本人也是菜鸟,也是参考了很多论坛上高手的代码。代码虽然能通过编译,可能不是最好的。欢迎大家提出意见。一、保存16进制数字的.dat文件: 1 ... 阅读全文
-
STL中的算法小结
摘要:(1)要运用STL的算法,首先必须包含头文件,某些STL算法用于数值处理,因此被定义于头文件(2)所有STL算法都被设计用来处理一个或多个迭代器区间,第一个区间通常以起点和终点表示,至于其他区间,多数情况下你只需提供起点便足以,其终点可以自动以第一个区间的元素数量推断出来,调用者必须保证这些区间的有效性。STL算法采用覆盖模式而非安插模式,所以调用者必须保证目标区间拥有足够的元素空间,当然你也可以运用特殊的安插型迭代器将覆盖模式改变为安插模式。(3)尾词_if:如果算法有两种形式,参数个数都相同,但第一形式的参数要求传递一个值,第二形式的参数要求传递一个函数或仿函数,那么尾词_if就派上了用场 阅读全文
-
OpenCascade简介
摘要:OpenCascade简介OverviewofOpenCascadeLibraryeryar@163.com摘要Abstract:对OpenCascade库的功能及其实现做简要介绍。关键字KeyWords:OpenCascade、occ、ModelingKernel、CADOpenCASCADETechnology是为特定领域快速开发程序而设计的面向对象的C++类库。可以使用OCCT来开发二维和三维的通用几何造型的计算机辅助设计程序CAD(ComputerAidedDesign),计算机辅助制造程序CAM(ComputerAidedManufacturing)和计算机辅助分析程序CAA(Com 阅读全文
-
更新整理本人所有博文中提供的代码与工具(C++,2013.08)
摘要:更新整理本人所有博文中提供的代码与工具(C++,2013.08) 为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载。C++1、《通用高性能 Windows Socket 组件 HP-Socket v2.2.2 正式发布》 《基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现》 《通用异步 Windows Socket TCP 客户端组件的设计与实现》 摘要:编写 Windows Socket TCP 客户端其实并不困难,Windows 提供了6种 I/O 通信模型供大家选择。... 阅读全文
-
当模板函数遇上数组参数
摘要:当模板函数遇上数组参数在伯乐在线上看到一篇关于数组和指针的文章(文章链接:http://blog.jobbole.com/44863/),突然想到自己最近也遇到一个类似的有趣的案例,于是决定写下来和大家分享。1. 我的初衷 我的初衷是想写一个简单通用的函数PrintIntArray用于打印一个int数组的各个元素。因为我想数组的长度是数组的属性,我不想每次调用此函数的时候手动传入数组长度,于是我将函数声明为PrintIntArray(int arr[]),然后写一个简单的内联函数(为了通用,声明为模板函数)用于动态获取数组长度(如下):template inline int GetArray. 阅读全文
-
标准库类型
摘要:标准库类型一.标准string类型 string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。1.1 string对象的定义和初始化 当没有明确指定对象初始化时,系统将使用默认构造函数。 注意:编程时一定要注意区分字符串字面值和string数据类型的使用。1.2 string对象的读写 1. string类型的输入操作符:读取并忽略开头所有的空白字符(如空格、换行符、制表符)。读取字符直至再次遇到空白字符,读取终止。 2.读入未知书目的string对象: string word; // read until end-of-file , ... 阅读全文
-
c++中的类型擦除
摘要:(原创)c++中的类型擦除c++11 boost技术交流群:296561497,欢迎大家来交流技术。关于类型擦除,可能很多人都不清楚,不知道类型擦除是干啥的,为什么需要类型擦除。有必要做个说明,类型擦除就是将原有类型消除或者隐藏。为什么要擦除类型?因为很多时候我不关心具体类型是什么或者根本就不需要这个类型,通过类型擦除我们可以获取很多好处,比如使得我们的程序有更好的扩展性、还能消除耦合以及消除一些重复行为,使程序更加简洁高效。归纳一下c++中类型擦除方式主要有如下五种:第一种:通过多态来擦除类型第二种:通过模板来擦除类型第三种:通过某种容器来擦除类型第四种:通过某种通用类型来擦除类型第五种:通 阅读全文
-
stl——vector详解
摘要:stl——vector详解stl——vector是应用最广泛的一种容器,类似于array,都将数据存储于连续空间中,支持随机访问。相对于array,vector对空间应用十分方便、高效,迭代器使vector更加灵活、安全。设计皆由vector起,键盘之下尽vector。1 vector本质 vector数据结构如下,通过三个迭代器start, finish, end_of_storage的系列public接口,可很好地完成数据存储、溢出判断(iter >= iv.end())、大小、容量(容量与大小不等,以免不断申请空间耗费资源)、重载操作符[]、判空、最前元素、最后元素等等。class 阅读全文
-
对普通函数、宏函数、内联函数的作用机制的探索
摘要:对普通函数、宏函数、内联函数的作用机制的探索这次我们来分析的是C/C++程序员经常遇到的问题,如何在普通函数、宏函数、内联函数之间做取舍,其实它们三者之间并没有什么绝对的你好我差的说法,只要掌握了三者的作用机制的话,结合实际情况一般都能做出正确的选择。下面我们一个个介绍上面的三个方法:1、普通函数就和它的名字一样,它代表着千千万万在普通不过的函数,说它普通并不是因为它负责的工作很普通,而是相较于宏定义和内联来说的,这样的函数有可能存在于类中,那时候我们叫它成员函数,而如果不在类中,我们一般都是叫它···函数,所以在这里我把它们通通叫做普通函数了。这类函数在程序的执 阅读全文
-
近期微博吐槽言论存档,涉及“性能优化”、C++陋习等
摘要:近期微博吐槽言论存档,涉及“性能优化”、C++陋习等写C++程序的几个陋习:class 名以大写 C 开头,例如 CDate;成员变量以 m_ 开头;变量采用匈牙利命名法;不知道何时禁用 copy-ctor/assign operator。前三个可能是从MFC那里传下来的,当时C++、class、OO是新玩意儿,要与 C struct 区分,现在还这么做就土了。C++的成员变量可用特殊命名格式,加下划线后缀即可(加下划线前缀是错的)。但在 Java 里不必模仿 C++ 的这种成员变量命名方式,IDE 可以让成员变量以不同的颜色显示,与局部变量区分,根本无需特殊命名。写程序就怕把以前的编程经验不 阅读全文
-
【c++】指针参数是如何传递内存的
摘要:【c++】指针参数是如何传递内存的如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下:void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); //str仍未NULL strcpy(str, "hello"); //运行错误}原因是编译器总是为每个参数制作临时副本。指针参数p, 其副本为_p,使_p=p。如果改变了_p所指的内容,相应的p所指的内... 阅读全文
-
指针的本质
摘要:指针的本质指针其实就是一个整数,这个整数表示一个内存的地址。句柄就是指针(句柄是WINDOWS的安全指针),因此句柄也是一个整数。传指针就是传递一个整数。在同一个进程中,传一个对象的指针就等于传一个对象。光说理论无用,直接上码:代码一:procedure TForm1.Button1Click(Sender: TObject);var i: THandle;begin i := self.Handle; TForm1(FindControl(i)).Caption := 'test';end;代码二:procedure TForm1.Button1Click(Sender: T 阅读全文