对象调用方法依次在c ++中调用另一个方法

时间:2015-09-22 10:07:49

标签: c++

在用c ++进行代码的逆向工程时,我发现了一些根本没有得到的代码。我是c ++的新手,我问这个问题的方式可能不正确,因为我不知道怎么问这个具体的问题请原谅我。让我详细说明一下。 我在代码中遇到过类似的东西。

obj.function_1( ).function_2(argument)

在某些地方我发现了

function_1( ).function_2(argument) 

function_1()function_2( )属于不同的类别。任何人都可以帮我解决上述两行的含义。

4 个答案:

答案 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)

  

......任何人都可以帮我解决上述两行的含义。

没有。这取决于对象和函数是什么,你还没有证明这一点。除非你能看到所有代码,否则无法分辨代码的作用。

例如,所有这些情况都不同:

  1. obj的类型为std::vector<int>function_1 == std::vector<int>::rbeginfunction_2 == std::vector<int>::reverse_iterator::operator[]

    这里,最后一行

    std::vector<int> obj = { 1, 2 };
    obj.rbegin().operator[](0);
    

    给出了向量的最后一个元素的int&引用(并且不会改变任何内容)

  2. obj的类型为std::vector<std::complex<double>>function_1 == std::vector<std::complex<double>>::frontfunction_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

  3. obj的类型为MyBigRDBMSfunction_1 == GetTables(返回我们数据库中所有表集合的代理),function_2 == Drop

    obj.GetAllTables.Drop();
    

    从我们的数据库中删除所有表格。