摘要:
摘要:虚函数里面有一个很特殊的东东,那就是纯虚函数,关于纯虚函数的问题也是bbs上常见的话题,这里我想对此作一个小小的论述,希望能给初学者一个满意的解释。
一、引入原因: 1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。 2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。 为了解决上述问题,引入了纯虚......
摘要:
struts 1.1 final终于发布了。新特性包括对多个子应用程序的支持、dynabean和beanutil、声明式异常处理、validator等。熟悉struts的人肯定早已在用struts 1.1,下面这篇文章是给不熟悉的人看的。
——————————————————
introduction
since the release of struts 1.0, struts has ......
数据结构学习(C++)——栈应用(表达式求值)
栈的应用很广泛,原书只讲解了表达式求值,那我也就只写这些.其实,栈的最大的用途是解决回溯问题,这也包含了消解递归;而当你用栈解决回溯问题成了习惯的时候,你就很少想到用递归了,比如迷宫求解.另外,人的习惯也是先入为主的,比如树的遍历,从学的那天开始,就是递归算法,虽然书上也教了用栈实现的方法,但应用的时候,你首先想到的还是递归;当然了,如果语言本身不支持递归(如basic),那栈就是唯一的选择了——好像现在的高级语言都是支持递归的.
#ifndef expression_h 【程序编程相关:
深入探索COM开发框架 之 MFC和AT】
如下是表达式类的定义与实现,表达式可以是中缀表示也可以是后缀表示,用头节点数据域里的type区分,这里有一点说明的是,由于单链表的赋值函数,我原来写的时候没有复制头节点的内容,所以,要是在两个表达式之间赋值,头节点里存的信息就丢了.你可以改写单链表的赋值函数来解决这个隐患,或者你根本不不在两个表达式之间赋值也行. 【推荐阅读:
VC中MSFLEXGRID内嵌EDIT实】
【扩展信息:
深入探索COM开发框架 之 MFC和AT】
#define expression_h
#include "list.h"
#include "stack.h"
#define infix 0
#define postfix 1
#define opnd 4
#define optr 8
template <class type> class expnode
{
public:
int type;
union { type opnd; char optr;};
expnode() : type(infix), optr(=) {}
expnode(type opnd) : type(opnd), opnd(opnd) {}
expnode(char optr) : type(optr), optr(optr) {}
};
template <class type> class expression : list<expnode<type> >
{
public:
void input()
{
makeempty(); get()->type =infix;
cout << endl << "输入表达式,以=结束输入" << endl;
type opnd; char optr = ;
while (optr != =)
{
cin >> opnd;
if (opnd != 0)
{...
下一页 摘要:
如果你细想想,就会发现,非零元节点如果没有指示位置的域,那么做加法和乘法时,为了确定节点的位置,每次都要遍历行和列的链表。因此,为了运算效率,这个域是必须的。为了看出十字链表和单链表的差异,我从单链表派生出十字链表,这需要先定义一种新的结构,如下:
class matnode
{
public:
int data;
int row, col;
union { node<m......