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