c++的重载在计算器中的应用

c++的重载是指同一函数名可实现不同的功能,成员函数被重载的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。

本次计算器中,中缀转后缀需要进行符号压栈,而计算的时候需要数字的计算,而栈的实现可以通过重载来实现,即提高效率又能更方便的使用。

示例如下:

bool Push(double i){  //不同数值代表不同符号
        lnkNode *tmp=new lnkNode(i);
        tmp->Setnext(top);
        top=tmp;
        size++;
        return true;
    }
    bool Push(long n,long d){
        lnkNode *tmp=new lnkNode(n,d);
        tmp->Setnext(top);
        top=tmp;
        size++;
        return true;
    }
    bool Pop(double &item){
        lnkNode *tmp;
        if(0==size){
            printf("emptyerror");
            return false;
        }
        item=top->Getinfo();
        tmp=top->Getnext();
        delete top;
        top=tmp;
        size--;
        return true;
    }

    bool Pop(long &n,long &d){
        lnkNode *tmp;
        if(0==size){
            printf("emptyerror");
            return false;
        }
        n = top->Getnt();
        d = top->Getdt();
        tmp = top->Getnext();
        delete top;
        top = tmp;
        size--;
        return true;
    }
时间: 2024-10-08 11:13:00

c++的重载在计算器中的应用的相关文章

VS2013 调试时出现“表达式计算器中发生内部错误”的问题解决办法

今天写代码的时候跟踪程序,发现打断点的地方根本看不到断点变量的结果,而且在快速监视中显示“ 表达式计算器中发生内部错误 ”,更看不到监视的变量了,上网找了半天也没找到答案,后来重新分析了一下自己的代码,发现是因为代码内部有死循环造成的,倒不是自己写的死循环,是有几个checkbox(我是在winform程序中)控件我添加了CheckedChanged事件方法,比如说这个事件方法我们暂且叫它FunctionA(“这个方法内部有设置类的枚举变量B的代码”),而我在Form_Load方法中又通过这个类

Android在拨号和计算器中加入暗码启动指定应用

比如在拨号面板中输入*#*#55555#*#*启动没有图标的应用,其包名和类名是com.zms.test/.Main 在计算器中输入55555然后按=,也启动这个应用.可以通过以下方式实现: 首先是拨号: 修改文件packages/apps/Dialer/src/com/android/dialer/SpecialCharSequenceMgr.java @@ -66,6 +66,7 @@ public class SpecialCharSequenceMgr { private static

自定义的类型放入STL的set中,需要重载自定义类中的“<”符号(转)

在以前学习STL的时候,曾经学到过,如果要将自定义的类型放入到set中的话,就需要重载“<”符号,原因是set是一个有序的集合,集合会按照“<”比较的大小,默认按照从小到大的顺序排列.假设我现在设计如下类型: class MyType { public: int a, b, c; } 这是,为了让MyType类型可以顺利的放进set中,我必须重载“<”,这时问题来了,要如何重载呢?这个类型有三个数据成员,我能不能要求按照a的大小排列,如果a相等的话就随便按照b或者c的大小排列呢?如果近实

在对listctrl的控件进行重载的过程中,GetHeaderCtrl()返回NULL的问题

先谈谈我的问题吧! 在使用listctrl的过程中,我需要在列表头部添加checkbox,实现全选的功能. 经过网上资料的罗列,我找到了一个demo,使用的重绘的方法,在使用的过程中,我发现我的列表头无法绘出checkbox,于是开始找问题,最后发现是因为cheadctlcl这个重载的类里面的函数无法响应, 于是问题一步步逼近,为什么重载函数无法调用?cheadctlcl类的所有函数都无法响应.于是找了下问题,最后发现问题出在: void CListCtrlEx::PreSubclassWind

第八周-运算符重载-Time类中的运算符重载

代码如下: #include <iostream> using namespace std; class CTime { private: unsigned short int hour; //时 unsigned short int minute; //分 unsigned short int second; //秒 public: CTime(int h=0,int m=0,int s=0); void setTime(int h,int m,int s); void display();

使用javascript制作加法计算器中检测用户输入的数值是否为正整数

一.要求 我们在 C#中,有一个keypress事件,可以做到判断输入的字符是否是非法字符.代码如下: public void txt_Str_KeyPress(object sender.KeyPressEventArgs e) { if(!char.IsDigit(e.KeyChar)) { e.Handled=true; } } 这样我们就会发现输入为非整数时就压根不出现.或者,如果不知道IsDigit()这个方法,我们还是可以按照(e.KeyChar>='0' && e.Ke

JAVA SE中方法重载和方法重写及数据库中子程序的重载

首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私有的特性,同时子类还可以扩展自己的特性,这样就引出了方法重写和方法重载! 一.方法重写(Override)         在Java中如何来定义重写:Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),同时也可以

C++中的函数重载与模板

函数就像工具,工具有好多种,我们就以螺丝刀为例来感受一下它和函数重载和模板的一些相似关系. 螺丝刀的种类有很多,常见的是一字型和梅花型, 每种类型从小到大又有好多个号. 我们根据螺丝样式和大小 选择使用那种类型的和选择多大号的螺丝刀. 螺丝刀就干了一件事,拧螺丝,也就是说各种螺丝刀他们的功能是相 同的,只是类型不同而已. 一.函数重载 在C++中,允许用一个函数名来表达功能相同,只是操作类型(形参个数和类型)不同的函数,这就是函数重载. 编译器能够根据他们各自的实参和形参以及参数的个数进行最佳分

OC中只有重写没有重载

一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序. 二.方法重写 在Objective-c中,子类可继承父类中的方法,而不需要重新编写相同的方法,直接可以使用父类的方法.但有时我们不想使用使用父类方法,而是想作一定的修改,怎么办呢?只要将子类中书写一个与父类具有相同的方法名.返回类型和参数,就可以将将父类的方法覆盖重写.比较简单. 三.方法重载 在Objec