【发布时间】:2010-06-11 11:38:34
【问题描述】:
这是我的代码 sn-p:
class Request
{
public:
Request(void);
………..
}
Request::Request(void)
{
qDebug()<<"Request: "<<"Hello World";
}
class LoginRequest :public Request
{
public:
LoginRequest(void);
LoginRequest(QDomDocument);
……………
}
LoginRequest::LoginRequest(void)
{
qDebug()<<"LoginRequest: "<<"Hello World";
requestType=LOGIN;
requestId=-1;
}
LoginRequest::LoginRequest(QDomDocument doc){
qDebug()<<"LoginRequest: "<<"Hello World with QDomDocument";
LoginRequest::LoginRequest();
xmlDoc_=doc;
}
当调用Overrided LoginRequest的构造函数时
LoginRequest *test=new LoginRequest(doc);
我想出了这个结果:
Request: Hello World
LoginRequest: Hello World with QDomDocument
Request: Hello World
LoginRequest: Hello World
很明显,LoginRequest 的构造函数都称为 REquest 构造函数。
有什么办法可以解决这种情况吗?
我可以构造另一个函数来完成我想做的工作,并让两个构造函数都调用该函数。但我想知道有什么解决办法吗?
编辑: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.3
【问题讨论】:
-
您为什么要处理这种情况?您正在创建两个
LoginRequests。显然这意味着你有 2 个请求,并且请求 ctor 应该被调用两次。 -
其实我是想创建一个LoginRequest,但现在我明白了。
标签: c++ inheritance constructor overloading