
C、C++
文章平均质量分 54
jianglike18
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
编程中的命名设计那点事
在我开始设计系统的时候,我会花去很多事情去设计命名,因为好的命名和好的设计是分不开的。In the beginning was the Word, and the Word was with God, and the Word was God太初有道。道与神同在,道就是神。 (约翰福音第一章,第一节)在设计过程中给类,方法和函数好的命名会带来好的设计,虽然这不是一定成立,但是如果坏的命名那转载 2009-06-08 21:13:00 · 789 阅读 · 1 评论 -
C++题目汇总
C++题目汇总1.求下面函数的返回值(微软)int func(x){int countx = 0;while(x){countx ++;x = x&(x-1);}return countx;} 假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2. 什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的“别名”(alias),转载 2009-09-21 13:56:00 · 790 阅读 · 0 评论 -
学习linux下的c/c++编程
学习linux下的c/c++编程 1,先有linux环境搭minGW和cygwin都有点麻烦,最最简单的办法还是装个真正的linux,用虚拟机也好,在网络上的另一台机器也好。这样不仅快,而且你有了真正的环境。2.会C/C++语言(估计你会的)3.入门阶段熟悉gcc命令行,最基本的参数,如,-g,-W,-O,-o,-c 建议看man gcc(很大找想要的)4.编译第一个helloworld程序转载 2009-09-21 14:55:00 · 618 阅读 · 0 评论 -
COM编程技术基础之一
COM编程技术基础之一 前言 所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于转载 2009-09-21 22:54:00 · 844 阅读 · 0 评论 -
COM编程技术基础之三
COM编程技术基础之三 在前面的文章中我们介绍了COM接口及其与COM组件的关系,在这一节中我将向大家介绍COM组件的可重用性。 包容与聚合 与所有面向对象的系统一样,COM组件的可重用性是其很重要的一个特性。与C++类在原代码级别的重用不同,COM组件的重用是建立在对二进制代码重用的基础上的。具体包括包容(cont转载 2009-09-21 22:58:00 · 1017 阅读 · 0 评论 -
网络编程学习小结(转)
几种网络编程方式:ISAPI、CGI、WinInet、Winsock它们之间的区别:1) ISAPI主要是开发基于浏览器客户端与服务器端程序。效率比CGI方式高,而且也扩展了CGI没有的一些功能。(基于TCP/IP模型中的应用层)2) CGI主要是开发基于浏览器客户端与服务器端程序。(基于TCP/IP模型中的应用层)3) WinInet主要是开发客户端程序。(基于TCP/原创 2009-09-21 13:43:00 · 650 阅读 · 0 评论 -
COM编程技术基础之四
COM编程技术基础之四 所谓自动化对象,指的是实现了IDispatch接口的COM对象,IDispatch接口是自动化对象的一个重要标志。使用自动化技术的一个主要目的就是对COM的一些底层操作进行简化。包括自动化组件和自动化客户两方面的内容,分别用来定义和使用自动化对象。自动化对象包含有属性和方法这两种重要的组成。属性类似于转载 2009-09-21 22:59:00 · 888 阅读 · 0 评论 -
VC6和VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
经常写VC工程的人都会遇到升级到VS2005时出现的各种各样的问题,下面写一些自己遇到的问题,还有什么不全的请大家补充。希望能给朋友们一些帮助。1.以前可以这样用try catchcatch(CException *e){ pApp->Warn("%s",e->GetErrorMessage); e->Delete(); return FALSE转载 2009-09-25 13:05:00 · 2362 阅读 · 0 评论 -
c++ 非虚拟继承可以正常使用,虚拟继承后执行的问题
本文源于C++对话系列类层次结构相当简单: class parent{public: virtual void f(); // etc...};class child : public virtual parent{public: void f();};我所做的修改之一就是把child虚拟地继承于parent,使它在这个原创 2009-10-28 11:31:00 · 993 阅读 · 0 评论 -
飞鸽传书的实现原理
(1)最关键的是局域网用户列表的建立;飞鸽传书数据包启动时使用UDP协议向255.255.255.255这个广播地址发送广播包,默认端口是2425。广播包内容包含用户名、工作组、主机名、IP等信息;已启动飞鸽的用户通过2425端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、工作组等信息,同时向对方IP发送本机用户的个人信息;从而双方都能建立起用户列表;(2)刷新用户列表时发送的转载 2009-11-05 10:44:00 · 10422 阅读 · 4 评论 -
COM编程技术基础概述之五
COM编程技术基础概述之五 在COM组件的使用和开发过程中经常需要获取有关组件的信息。而COM组件以二进制代码的形式发布,如果不借助特定的工具这些相关信息将难以被获取。例如,这里在使用Calendar组件时就用到了它的ProgID--MSCAL.Calendar.7。通过VC++附带的OLE/COM Object Viewe转载 2009-09-21 22:59:00 · 1076 阅读 · 0 评论 -
COM编程技术基础之二
COM编程技术基础之二 COM接口与COM组件 COM接口是COM规范中最重要的部分,COM规范的核心内容就是对接口的定义,甚至可以说“在COM中接口就是一切”。组件与组件之间、组件与客户之间都要通过接口进行交互。接口成员函数将负责为客户或其他组件提供服务。与标识COM对象的CLSID类似,每一个COM接口也使用一个GUI转载 2009-09-21 22:56:00 · 1037 阅读 · 0 评论 -
COM编程技术基础概述之六
COM编程技术基础概述之六 在直接使用类型库时,应首先将类型库装载到内存,这可以通过多种方式进行。对于已注册到注册表中的类型库,可以使用LoadRegTypeLib()装载。如果知道类型库的准确路径也可以通过LoadTypeLib()函数直接从磁盘装载,并在装载成功后需要调用RegisterTypeLib()完成在注册表中的转载 2009-09-21 23:00:00 · 1009 阅读 · 0 评论 -
C++ 内存容量
很简单那的几行代码,猜猜它的输出结果: char a[] = "hello world";char *p = a;coutcout 答案写在后面。 sizeof(a)的值是12(注意别忘了’/0’)。指针p 指向a,但是sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,相当于原创 2009-06-24 17:06:00 · 689 阅读 · 1 评论 -
C++ 返回值为何不能判断成员函数重载
函数的两个要素:参数与返回值。 如果同名函数的参数不同(包括类型、顺序不同),那么容易区别出它们是不同的函数。 如果同名函数仅仅是返回值类型不同,有时可以区分,有时却不能。例如:void Function(void);int Function (void);上述两个函数,第一个没有返回值,第二个的返回值是int 类型。如果这样调用函数:int x = Functio原创 2009-06-25 14:22:00 · 4312 阅读 · 1 评论 -
static_cast 和 reinterpret_cast的区别
static_cast 和 reinterpret_cast的区别大多程序员在学C++前都学过C,并且习惯于C风格(类型)转换。当写C++(程序)时,有时候我们在使用static_cast时可能会有点模糊。在本文中,我将说明static_cast泛型(Generic Types) float f = 12.3; float* pf = &f;转载 2009-06-29 16:34:00 · 686 阅读 · 0 评论 -
C++ /C内存耗尽怎么办?
如果在申请动态内存时找不到足够大的内存块,malloc 和new 将返回NULL 指针,宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。(1)判断指针是否为NULL,如果是则马上用return 语句终止本函数。例如:void Func(void){A *a = new A;if(a == NULL){return;}…}(2)判断指针是否为NULL,如果是则马上用exit(1)终止整个程序原创 2009-07-03 08:33:00 · 1792 阅读 · 0 评论 -
常见的内存错误及其对策
个人感觉写的非常好,所以推荐给大家常见的内存错误及其对策 发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问题,你一走,错误又发作了。常见的内存错误及其对策如下:原创 2009-07-03 08:42:00 · 616 阅读 · 0 评论 -
Enum to String and vice versa in C++
在国外一网站上看到一篇字符串和枚举类型之间的转换,贴出来给大家看下: 文章的源代码可以通过如下链接下载:源代码Introduction While adding Serialization support to my project, I realized that I would require some way to convert a string to an enumera原创 2009-09-04 13:26:00 · 2517 阅读 · 0 评论 -
增加缓存的大小的一个例子
当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。下面是一个增加初始缓存大小的例子: 仔细琢磨一下........ // console.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #includ原创 2009-07-06 16:03:00 · 643 阅读 · 1 评论 -
发现ICE一个小小的BUG
今天在使用的ICEIce-3.3.1,发现一个很奇怪的问题,比方我定义了一个很简单的.ice文件内容如下 :module DataParse{ enum DfType{dfBase,dfEnum,dfOther}; enum DtType {dInt,dFloat,dString,dDate,dTime,dDataTime}; interface IDataItem; sequenc原创 2009-09-16 14:45:00 · 976 阅读 · 1 评论 -
VS2005写ICE的一个完整的例子
VS2005写ICE的一个完整的例子 开发环境:VS2005 ,Ice 版本 3.3.1说明:客户端使用ICE远程调用服务器端的方法(printString(string s))步骤说明:1、安装Ice 版本 3.3.12、设置ICE的环境变量:ICE_Dir = =安装的根目录> PATH=%ICE_Dir%/bin 设置完变量以后可以在命令行下使用 “sli原创 2009-09-17 13:37:00 · 3419 阅读 · 2 评论 -
c++ 16进制转化为10进制的几种方法
第一种方法: int hex_char_value(char c) { if(c >= 0 && c <= 9) return c - 0; else if(c >= a && c <= f) return (c - a + 10); else if(c >原创 2009-10-30 17:29:00 · 35816 阅读 · 0 评论