在浏览教程 9 的http://www.omnetpp.org/doc/omnetpp/tictoc-tutorial/part2.html给出的 OMNeT 教程时,我遇到了一些令人困惑的符号:
void Tic9::sendCopyOf(cMessage *msg)
{
cMessage *copy = (cMessage *) msg->dup();
send(copy, "out");
}
代码非常简短整洁,但是由于我对 C++ / OMNeT 的经验很少,我无法理解这里的这一行是做什么的:cMessage *copy = (cMessage *) msg->dup();
,更具体地说是(cMessage *)
. 我知道msg->dup()
其实意思(*msg).dup()
。
谁能详细说明一下,内存中实际发生了什么?
发布编辑附录:
代码dup()
:
virtual cMessage *dup() const
{
return new cMessage(*this);
}
描述dup()
:创建并返回此对象的精确副本。
这是否意味着在(cMessage *) msg->dup()
内部传递由msg->dup()
to返回的对象的地址*copy?
另一个令人困惑的符号:
cMessage *Tic9::generateNewMessage()
{
// Generate a message with a different name every time.
char msgname[20];
sprintf(msgname, "tic-%d", ++seq);
cMessage *msg = new cMessage(msgname);
return msg;
}
*
类名前面的在这里是什么意思:*Tic9::generateNewMessage()