zoukankan      html  css  js  c++  java
  • 抽象类的用途

    1.抽象基类提供了统一的借口,用于处理各种不同的派生类。

    2.抽象类将实现的责任交给了派生类。

     1 float ComputeNetWorth(const TPersonalAsset *assets[], unsigned size)
     2 {
     3     //assets-该数组中包含指向TPersonalAsset类对象的指针
     4     //size-该数组中包含的元素个数
     5 
     6     float totalWorth = 0.0;
     7 
     8     /*资产数组的每个位置都指向一个某类型的TPersonalAsset类对象的指针。
     9       我们希望通过该对象调用ComputeNetWorth方法。
    10       动态绑定机制将为该对象选择正确的方法*/
    11 
    12     for (int i = 0; i < size; i++)
    13         /*在该位置通过资产对象调用虚方法
    14           assets[i]是一个指向TPersonalAsset类对象的指针。
    15           为totalWorth添加worth的返回值。为数组中所以的对象重复该步骤。*/
    16         if (assets[i] != 0)
    17             totalWorth += assets[i]->ComputeNetWorth();
    18     return totalWorth;
    19     
    20 }

    其中一个派生类的实现:

     1 class TAutomobileAsset :public TPersonalAsset
     2 {
     3 public:
     4     TAutomobileAsset(float originalPrice, const char licence[], const char date[], float loanAmount);
     5     
     6     virtual bool IsInsurable() const;
     7     virtual float ComputeNetWorth() const;
     8 
     9 private:
    10     float _purchasePrice;
    11     TString _licesePlate;
    12     float _amountOwed;
    13 };
    14 
    15 TAutomobileAsset::TAutomobileAsset(float originalPrice, const char licence[], const char date[], float loanAmount)
    16     :TPersonalAsset(date),_licencePlate(licence),_amountOwed(loanAmount),_purchasePrice(originalPrice)
    17 {
    18 
    19 }
    20 
    21 float TAutomobileAsset::ComputeNetWorth() const
    22 {
    23     /*此处为计算净值的代码*/
    24     return _purchasePrice;
    25 }
  • 相关阅读:
    asp.net 验证输入有效性
    优化SQL SERVER访问性能
    with nocheck ; nocheck
    VB SStab设置当前页
    相互关联的子查询
    mybatis 批量查询参数语句
    转载 mysql函数大全
    Tchar.h 中的一般文本映射
    字节序的概念、判断、及转换
    Windows风格与C/C++风格:UNICODE VS _UNICODE 与 TEXT() VS _T()
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/6603921.html
Copyright © 2011-2022 走看看