类中的c ++函数调用与定义

时间:2018-01-22 15:59:50

标签: c++ class

我正在阅读下面的C ++代码:

// Take a whole packet from somewhere.
EthernetII packet = ...;
// Find the IP layer
const IP* ip = packet.find_pdu<IP>();
if(ip) {
    // If the pointer is not null, then it will point to the IP layer
}
// Find the TCP layer. This will throw a pdu_not_found exception
// if there is no TCP layer in this packet.
const TCP& tcp = packet.rfind_pdu<TCP>();

PDU::rfind_pdu()的定义如下。我的问题是,如果不将一个论点传递给rfind_pdu()?什么是允许<IP>附加到函数调用的语法?

  

template<typename T> const T& Tins::PDU::rfind_pdu(PDUType type = T::pdu_flag) const inline

     

查找并返回第一个PDU   匹配给定的标志。

     

参数flag正在搜索的标志。

1 个答案:

答案 0 :(得分:0)

参数不必必然传递,因为它默认T::pdu_flag

调用站点<TCP>表示法消除模板(这是必需的,因为不能从任何函数参数收集适当的模板实例,因为没有任何函数参数)。无论是什么原因,默认参数值都是TCP::pdu_flag