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

single object accessing two functions in c++

本文关键字:两个 函数 对象 访问 c++ 单个      更新时间:2023-10-16

这段代码在做什么?

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

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

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

trap.GetPDU().GetVarBindList()

相当于:

obj.GetVarBindList()

其中objtrap.GetPDU() 返回的对象

这也称为方法链接

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

相当于:

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

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

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