Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/articles/cpp-tutorials/)
-   -   Function Chaining in C++ (Call more than one function in a sequence ) (http://www.go4expert.com/articles/function-chaining-cpp-function-sequence-t5491/)

Shishir191 27Jul2007 15:29

Function Chaining in C++ (Call more than one function in a sequence )
 
1) This Simple program explain one of the use of this pointer in C++.
2) With the help of "this" pointer you can call as many as functions in a sequence.
3) This procedure is called function chaining
4) In this program i have used three different function and through main i have called all these function in a sequence with the help of this pointer
Code: Cpp

#include<iostream.h>
#include<conio.h>

class Test
{
   
public:
   
    Test Display(); // Function 1
    Test Show();    // Function 2
    Test Result()// Function 3
   
};

Test Test::Display()
{
    cout<<"Function 1"<<endl;
    return *this// Return this pointer
}

Test Test::Show()
{
    cout<<"Function 2"<<endl;
    return *this;
}

Test Test::Result()
{
    cout<<"Result 3"<<endl;
    return *this;
}

void main()
{
    Test Obj;
   
    //Here i have called all the three function in a sequence.
   
    Obj.Display().Show().Result(); //This is called Function Chaining
   
    getch();
}


oleber 28Jul2007 13:26

Re: Function Chaining in C++ (Call more than one function in a sequence )
 
You need to return a reference :eek:, otherwise you are doing a copy of the object :confused:.
Try to add the method:

Code: CPP

Test::Test(Test& test) {
    cout<<"Test::Test(Test& test)\n";
}


Better shall be: :cool:

Code: CPP

#include <iostream>
using namespace std;Correct should be:
class Test
{
   
public:
    Test() {};
    Test(Test& test);
    Test& Display(); // Function 1
    Test& Show();    // Function 2
    Test& Result()// Function 3
};

Test::Test(Test& test) {
    cout<<"Test::Test(Test& test)\n";
}

Test& Test::Display()
{
    cout<<"Function 1"<<endl;
    return *this// Return this pointer
}

Test& Test::Show()
{
    cout<<"Function 2"<<endl;
    return *this;
}

Test& Test::Result()
{
    cout<<"Result 3"<<endl;
    return *this;
}

int main()
{
    Test Obj;
   
    //Here i have called all the three function in a sequence.   
    Obj.Display().Show().Result(); //This is called Function Chaining
}


Shishir191 28Jul2007 17:13

Re: Function Chaining in C++ (Call more than one function in a sequence )
 
Yes, You are right. Thanks for your suggestion and reply.


All times are GMT +5.5. The time now is 00:36.