[英]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.