对象调用一个方法,然后在 C++ 中依次调用另一个方法

Object calling a method in turn calling another in c++

本文关键字:调用 方法 C++ 另一个 然后 一个 对象      更新时间:2023-10-16

在用 c++ 对代码进行逆向工程时,我发现代码的某些部分根本没有得到。我是 c++ 的新手,提问的方式可能不正确,因为我不知道如何问这个具体问题,请原谅我。让我对此稍作阐述。我在代码中遇到了这样的事情。

obj.function_1( ).function_2(argument)

在某些地方,我发现像

function_1( ).function_2(argument) 

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

它只是调用function_1()的返回值function_2(argument)。你也可以把它写成

ObjA obja;
ObjB objb = obja.function_1();
objb.function_2(argument);

第二个示例也是如此:

ObjB objb = function_1();
objb.function_2(argument);
它以

不同的方式编写在您的代码中,以便不用担心该临时变量,可能是因为以后不需要它。

obj.function_1()将返回一个对象,该对象具有一个名为 function_2 的成员函数。

这对function_1().function_2(argument)来说是一样的.

obj.function_1( ).function_2(argument)
->调用objfunction_1( ),然后调用function_2(argument)返回值obj.function_1( )


function_1( ).function_2(argument)->调用function_1( )(在全局或此代码所在的类中(,然后全部function_2(argument)返回值 function_1( )

obj.function_1( ).function_2(argument)

意味着obj具有function_1(),并且返回类型(可能是某种类型的对象(function_1()具有function_2(),它将argument作为参数。

同样地

function_1( ).function_2(argument)

表示在当前范围内调用 function_1() 是有效的,并且 function_1() 的返回类型(可能是某种类型的对象(具有function_2(),它将argument作为参数。

。任何人都可以帮助我上面两行的含义。

不。这取决于对象和函数是什么,而你还没有证明这一点。无法判断代码的作用,除非您可以看到所有代码

例如,所有这些方案都不同:

  1. 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&引用(并且不会更改任何内容(

  2. 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

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

    obj.GetAllTables.Drop();
    

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