【发布时间】:2014-04-30 04:09:21
【问题描述】:
我是类的新手,我试图了解构造函数在被继承的类在另一个中使用时是如何工作的。 所以在我的项目中,我有 2 个课程。例如一个是 postalService:
class postalService {
private:
string address;
Date date //I used another class Date (composition)
public:
postalService();
postalService(string a, int b, int c, int d);
postalService(const postalService& p);
~postalService();
}
使用构造函数:
postalService::postalService():address(""), date(){
}
postalService::postalService(string a, int b, int c, int d):address(a), date(b,c,d){
}
postalService::postalService(const postalService& p) {
}
postalService::~postalService(){
}
然后是另一个类是 Letter,它是由类 postalService 继承的:
class letter : public postalService {
private:
bool registered_shipment;
string sender;
public:
letter();
letter(postalService& a, bool b, string c);
letter(const letter& p);
~letter();
使用构造函数:
letter::letter():postalService(), registered_shipment(false), sender("") {
}
letter::letter(const letter& p):postalService(p), registered_shipment(p.registered_shipment), sender(p.sender) {
}
letter::letter(postalService& a, bool b, string c):postalService(a), registered_shipment(b), sender(c){
}
letter::~letter(){
}
现在,当我尝试下面的代码时,如果我创建一个名为 service 的 postalService 对象(不使用默认构造函数)并尝试使用以下构造函数将其包含在我的对象字母中:letter::letter(postalService& a, bool b, string c):postalService(a), registered_shipment(b), sender(c){
}:
letter my_letter(service, true, "John Smith");
每个继承的变量都是空的(与service 对象不同)。
我试图了解这里发生了什么。我希望我说清楚了,我为这样一个延伸的问题道歉。提前致谢。
【问题讨论】:
-
@JoachimPileborg 好的。但如果我这样做了,为什么它不起作用?
标签: c++ class copy-constructor composition default-constructor