簡體   English   中英

C ++子類構造函數

[英]C++ Subclass Constructor

我在理解如何構造子類時遇到了麻煩。 我的父類稱為“包裹”,子類稱為“過夜”和“ twoDay”。 包裝類別處理收件人的姓名和地址,以及包裝重量和每盎司運輸成本。 twoDay還增加了額外的運輸費用,隔夜增加了每盎司的運輸成本。

包類文件運行良好,但我不知道如何在子代構造函數中使用它。 下面,我將顯示軟件包和通宵文件以及主程序文件的頭文件區域。

program.cpp

#include <iostream>
#include <string>
#include "package.h"
#include "twoDay.h"
#include "overnight.h"

int main() {

}

package.h

#include <string>
#include "name.h"
#include "address.h"

class package {
 public:
  package();
  package(std::string initFirst, std::string initLast, std::string initLineOne,
          std::string initLineTwo, std::string initCity, std::string initState,
          std::string initZip, double initWeight, double initPrice);
  double getWeight() const;
  double getPrice() const;
  double getCost() const;
 private:
  name recipientName;
  address recipientAddress;
  double weight;
  double price;
};

package.cpp

#include "package.h"

package::package(){
  recipientName = name();
  recipientAddress = address();
  weight = 0.0;
  price = 0.0;
}

package::package(std::string initFirst, std::string initLast, std::string initLineOne,
                 std::string initLineTwo, std::string initCity, std::string initState,
                 std::string initZip, double initWeight, double initPrice)
  : recipientName(initFirst,initLast), recipientAddress(initLineOne,initLineTwo,initCity,initState,initZip) {
  weight = initWeight;
  price = initPrice;
}

overnight.h

#include <string>

class overnight : public package {
 public:
  overnight();
  overnight(std::string initFirst, std::string initLast, std::string initLineOne,
            std::string initLineTwo, std::string initCity, std::string initState,
            std::string initZip, double initWeight, double initPrice, double initOunceFee);
  double getOvernightCost() const;
 private:
  package packageInfo;
  double ounceFee;
};

overnight.cpp

#include "overnight.h"

overnight::overnight() {
  packageInfo = package();
  ounceFee = 0.0;
}

overnight::overnight(std::string initFirst, std::string initLast, std::string initLineOne,
                     std::string initLineTwo, std::string initCity, std::string initState,
                     std::string initZip, double initWeight, double initPrice, double initOunceFee)
  : packageInfo(initFirst,initLast,initLineOne,initLineTwo,initCity,initState,initZip,initWeight,initPrice){
  ounceFee = initOunceFee;
}

因此,我遇到的問題是帶有參數的nightly.cpp的第二個構造函數。

overnight的類是一個 package ,您不需要合成並將package對象嵌入到類中。

至於構造函數,例如

overnight::overnight(std::string initFirst, std::string initLast, std::string initLineOne,
    std::string initLineTwo, std::string initCity, std::string initState,
    std::string initZip, double initWeight, double initPrice, double initOunceFee)
: package(initFirst,initLast,initLineOne,initLineTwo,initCity,initState,initZip,initWeight,initPrice){
//^^^^^^^ Note the use of the base class here
    ounceFee = initOunceFee;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM