C/C++
文章平均质量分 64
adrianfeng
这个作者很懒,什么都没留下…
展开
-
C++中两个类交叉定义或递归定义的解决办法
<br />有两个类这样定义:<br /> <br />Subject.h 头文件如下:<br />#ifndef SUBJECT_H<br />#define SUBJECT_H<br />#include <iostream><br />#include "Observer.h"<br /> <br />class Subject<br />{<br />public:<br /> void Info(){ std::cout <<" Subject !/n"; }<br />protect转载 2010-09-30 15:53:00 · 2937 阅读 · 0 评论 -
子窗口与父窗口的消息关系网-2
<br /><br />下面是得自MSDN中关于Common Controls的说明,具体路径为:ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/shellcc/platform/commctls/common/common.htm#Using_Common_Control<br />可以发消息给通用控件来通知控件做某事或者向控件要某事。<br />当控件发生某事件,比如用户输入,会向父窗口发WM_NOTIFY消息。请自行查阅WM_NOT转载 2010-11-25 14:04:00 · 1423 阅读 · 0 评论 -
重载和虚函数的差别
<br />相同点:<br />两者都是为了实现多态。<br />不同点:<br />1、重载函数要求他们的参数表要不同,虚函数的参数表和返回值都要求相同。<br />2、重载函数在编译时就已经确定了不同,就是说编译器会根据参数表的不同给予他们不同的函数名,而重载是在程序运行时才确定的。<br />3、虚函数是为用基类指针访问子类函数设计的。而重载函数只执行指针类型的类的函数。<br />下面举个例子:<br />class A{public: void overload_print(){pri原创 2010-11-25 11:00:00 · 1096 阅读 · 0 评论 -
理解虚基类、虚函数与纯虚函数的概念
<br />理解虚基类、虚函数与纯虚函数的概念<br />引言<br /> 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要紧待看完本文后你就会理解了。<br />正文<br /> 虚基类<br /> 在说明其作用前先看一段代码<br />class A<br />{<br />public:<br /> in转载 2010-11-22 09:46:00 · 530 阅读 · 0 评论 -
类的构造函数调用顺序是什么?
<br /> <br />类的构造函数调用顺序是什么?<br />如果一个类有多个基类,基类的构造函数在继承类的构造函数之前被调用。基类的构造函数以被声明的顺序被调用。下面是一个例子:<br />class Y {...} <br />class X : public Y {...} <br />X one; <br /> <br />构造函数的调用顺序是下面的顺序:<br />Y(); // 基类的构造函数<br />X(); // 继承类的构造函数<br />对于多基类的情况,下面是一个例子:<br /转载 2010-11-22 09:36:00 · 1370 阅读 · 0 评论 -
虚函数例子
解释虚函数的例子(父类子类指针函数调用注意事项)父类子类指针函数调用注意事项<br />1,如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数(静态联翩)<br /><br />2,如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合生活习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)<br /><br />3,如果基础类和衍生类定义了相同名称的成员函数,那么通过对象指针调用成员函数时,到转载 2010-11-12 17:08:00 · 1741 阅读 · 0 评论 -
tcp打洞
<br /><br />Internet的迅速发展以及IPv4地址数量的限制使得网络地址翻译(NAT,Network AddressTrans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网(本文将处于同一NAT后的网络称为私网,处于NAT前的网络称为公网)IP 地址。一个私网IP 地址通过NAT设备与公网的其他主机通信。公网和私网IP地址域,如下图所示:<br />广域网与私网示意图<br />一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起转载 2010-11-02 14:27:00 · 4437 阅读 · 2 评论 -
宏参数加括号的原因
<br /><br />加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换,所以如果有以下情况:<br /> <br />#define COM(A,B) (A)*(B)<br /> <br />那么COM(6+5,3)这个调用会怎么替换呢?它会换成这样:<br /> <br />(6+5)*(3)<br /> <br />显然这是和COM宏的意图一致的,但是如是去掉了定义中括号,即写成这样:<br /> <br />#define COM(A,B) A*B<br /原创 2010-11-01 09:54:00 · 1098 阅读 · 0 评论 -
C语言宏中"#"和"##"的用法
C语言宏中"#"和"##"的用法 在查看linux内核源码的过程中,遇到了许多宏,这里面有许多都涉及到"#"和"##",因此,在网上搜索了一些资料,整理如下:一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include #include using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main()转载 2010-11-01 09:41:00 · 526 阅读 · 0 评论 -
与大虾对话: 领悟设计模式
<br /><br />与大虾对话: 领悟设计模式<br />--Template Method / Visitor<br />[译者按] 本文根据发表在CUJ Expert Forum上的两篇文章编译而成。C/C++ User's Journal是目前最出色的C/C++语言专业杂志,特别是在C++ Report闭刊之后,CUJ的地位更加突出。CUJ Expert Forum是CUJ主办的网上技术专栏,汇集2000年10月以来C++社群中顶尖专家的技术短文,并免费公开发布,精彩纷呈,是每一个C/C++学习者转载 2010-12-10 20:42:00 · 701 阅读 · 0 评论 -
C++虚函数表解析(转)
<br />C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。<br />关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个转载 2010-12-10 16:44:00 · 468 阅读 · 0 评论 -
C语言中几种输出调试信息的方法
<br /><br />在调试程序时,输出调试信息是一种普遍、有效的方法。输出调试信息一般有以下五种方法:<br />方法一:直接使用屏幕打印函数printf。<br />该方法直接在需要输出调试信息的位置使用函数printf输出相应的调试信息,以及某些关键变量的值。我们通过以下求阶层的函数fact来看看该方法的调试程序过程。 #include <stdio.h><br /> int fact(int n)<br /> {<br /> int i,f=1;<br /> f转载 2011-03-17 14:07:00 · 1031 阅读 · 0 评论