繁体   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