在浏览教程 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()