在用c ++进行代码的逆向工程时,我发现了一些根本没有得到的代码。我是c ++的新手,我问这个问题的方式可能不正确,因为我不知道怎么问这个具体的问题请原谅我。让我详细说明一下。 我在代码中遇到过类似的东西。
obj.function_1( ).function_2(argument)
在某些地方我发现了
function_1( ).function_2(argument)
function_1()
和function_2( )
属于不同的类别。任何人都可以帮我解决上述两行的含义。
答案 0 :(得分:1)
var javascriptVariable= "RandomLabel"
var result = <%= CachedLanguageItems.GetLabel(javascriptVariable).Value %>
将返回一个具有名为obj.function_1()
的成员函数的对象。
对于function_2
,这将是相同的。
答案 1 :(得分:1)
它只调用function_2(argument)
的返回值function_1()
。
您也可以将其写为
ObjA obja;
ObjB objb = obja.function_1();
objb.function_2(argument);
与第二个例子相同:
ObjB objb = function_1();
objb.function_2(argument);
它以不同的方式写入您的代码中,以免担心该临时变量,可能是因为以后不需要它。
答案 2 :(得分:0)
obj.function_1( ).function_2(argument)
- &GT;致电function_1( )
的{{1}},然后致电obj
获取function_2(argument)
的返回值
obj.function_1( )
- &GT;致电function_1( ).function_2(argument)
(在此代码所在的全局或类别中),然后function_1( )
的返回值为function_2(argument)
答案 3 :(得分:0)
......任何人都可以帮我解决上述两行的含义。
没有。这取决于对象和函数是什么,你还没有证明这一点。除非你能看到所有代码,否则无法分辨代码的作用。
例如,所有这些情况都不同:
obj的类型为std::vector<int>
,function_1 == std::vector<int>::rbegin
和function_2 == std::vector<int>::reverse_iterator::operator[]
这里,最后一行
std::vector<int> obj = { 1, 2 };
obj.rbegin().operator[](0);
给出了向量的最后一个元素的int&
引用(并且不会改变任何内容)
obj的类型为std::vector<std::complex<double>>
,function_1 == std::vector<std::complex<double>>::front
和function_2 == std::complex<double>::operator+=
std::vector<std::complex<double>> obj = {{1,1}, {-1,-1}};
obj.front().operator+=(-1);
从第一个复杂元素的实部减去1,将{0,1}
= i 作为第一个元素而不是{1,1}
= 1 + i
obj的类型为MyBigRDBMS
,function_1 == GetTables
(返回我们数据库中所有表集合的代理),function_2 == Drop
obj.GetAllTables.Drop();
从我们的数据库中删除所有表格。