单个对象在c ++中访问两个函数

时间:2012-02-07 15:35:28

标签: c++

这段代码在做什么?

SNMP_Sequence trapseq = trap.GetPDU().GetVarBindList();

据我所知,一个对象一次只能引用一个成员函数。 这里发生了什么? trap.GetPDU().GetVarBindList()

3 个答案:

答案 0 :(得分:4)

trap.GetPDU()返回一个对象,并在该对象上调用GetVarBindList()

trap.GetPDU().GetVarBindList()

相当于:

obj.GetVarBindList()

其中objtrap.GetPDU()

返回的对象

这也称为 Method Chaining

答案 1 :(得分:0)

它正在检索GetPDU返回的对象(或引用),然后在其上调用GetVarBindList

等同于:

SomeObject &PDU = trap.GetPDU();
SNMP_Sequence trapseq = PDU.GetVarBindList();

答案 2 :(得分:0)

在任何表达式的结果上调用成员函数是完全合法的,包括访问另一个成员,如果该表达式具有适当的类型。

std::vector<std::vector<std::vector<std::string>>> super_jaggy;
// insert stuff here
std::cout << super_jaggy.front().front().front().size(); // legal