• 13.1.2 纯虚函数(Pure Virutal Functions) 简单


    #ifndef HEADER_ACCOUNT
    #define HEADER_ACCOUNT
    
    #include<string>
    using std::string;
    class Account
    {
         string acntNumber;
    	 double balance;
    public:
    	 //构造函数
    	 Account(string _acntNumber, double _balance=0.0);
    	 //定义一个虚函数display并定义为const型
    	 virtual void display()const;
    	 //定义返回double类型函数getBalance
    	 double getBalance(){ return balance;}
    	 //定义void型函数,参数为double型,对balance变量进行加操作
    	 void deposit(double amount){ balance += amount;}
    	 
    	 //定义重载运算符==
    	 //右边的参数为一个Account类型的引用a
    	 //而右边的参数当前类型自己
    	 //如果为等于返回true否则返回falsh
    	 bool operator==(const Account& a)const{
    		std::cout<<"acntNumber:"<<acntNumber<<" = a.acntNumber"<<a.acntNumber<<"\n";
    	    return balance == a.balance;
    	 }
    
    	 //定义一个虚函数withdrawal,一会儿进行声明纯虚函数
    	 virtual void withdrawal(double amount);
    };
    #endif
    

      

    #include <iostream>
    #include "account.h"
    
    Account::Account(string _acntNumber, double _balance):acntNumber(_acntNumber),balance(_balance){};
    
    void Account::display()const{
       std::cout<<"acntNumber:"<<acntNumber<<", balance:"<<balance<<"\n";
    };
    
    void Account::withdrawal(double amount){
       balance += amount;
    };
    

      

    //我们引入抽像类(Abstract Classes)的概念,抽像类的用途是被继承
    //定义抽像类就是在类定义中至少声明一个纯虚函数Virtual,
    /**/
    #include <iostream>
    #include "account.h";
    int main()
    {
    //定义小向
    //Account *a = new Account("小向",22.11);
    //a->display();


    //定义小菊
    //Account *b = new Account("小菊",22.11);
    //b->display();

    //给小向加上一百元
    //a->deposit(100);
    //给小菊加上十元
    //b->deposit(100);

    //现在对比两个人的帐户金额是否相同
    //bool isok=false;
    //这里并没有调用重载运算符operator==
    //isok = a==b;
    //a->operator==b;
    //isok = a.operator==b;
    //这里停一下,重载运算符调用不成功样,得先去学习一下重载运算符

    Account a("小向",22.11);
    Account b("小菊",22.11);

    if(a == b){
    std::cout<<"相等\n";
    }else
    std::cout<<"不相等\n";
    system("pause");
    return 0;
    }

  • 相关阅读:
    Net core 关于缓存的实现
    2018年自己的技术心得
    DataSet
    弹错:正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
    c#中结构与类的区别
    TEQC使用说明
    TEQC软件及使用方法
    <深度工作>笔记
    Gtest学习系列三:断言
    Gtest学习系列二:Gtest基本介绍
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2348375.html
Copyright © 2020-2023  润新知