Overloaded functions

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • kazack

    Overloaded functions

    I know that this is possible and I now how it is possible.
    But why would you want to call more than one function the same name to begin
    with? Wouldn't it be just easier to call them 2 different names?

    Ex.
    #include <string>
    #include <iostream>
    //why not integer_print and string_print??? ???
    void print(int);
    void print(string);

    int main()
    {
    string name = "test";
    int a = 4;
    print(a);
    print(name);
    return 0;
    }

    void print(string name)
    {
    cout << name;
    }

    void print(int a)
    {
    cout << a;
    }

    Thanks for the understanding.
    Shawn Mulligan



  • Chris Theis

    #2
    Re: Overloaded functions


    "kazack" <kazack@talon.n et> wrote in message
    news:LXkxb.7429 $Bv6.2253651@ne ws1.epix.net...[color=blue]
    > I know that this is possible and I now how it is possible.
    > But why would you want to call more than one function the same name to[/color]
    begin[color=blue]
    > with? Wouldn't it be just easier to call them 2 different names?
    >[/color]
    [SNIP]

    IMHO it's easier for the user only to have to remember one name for
    something which basically performs the same thing - in your example the
    output of something. Why should the user have to care whether it's an
    integer or a string or whatever. If you put this information into the name
    of everything you'll end up with a whole lot of names that will puzzle the
    user one day. It's a good rule that things that do the same thing, should
    have the same name although they might operate on different objects/data
    types and thus will have different parameters.


    HTH
    Chris


    Comment

    • osmium

      #3
      Re: Overloaded functions

      kazack writes:
      [color=blue]
      > I know that this is possible and I now how it is possible.
      > But why would you want to call more than one function the same name to[/color]
      begin[color=blue]
      > with? Wouldn't it be just easier to call them 2 different names?[/color]

      All the good names get used up fast. Consider swap, abs, remove, .....

      Would you really want to type 'interchange' for swap? What is the third guy
      to come along going to use?


      Comment

      • Stephen M. Webb

        #4
        Re: Overloaded functions

        "kazack" <kazack@talon.n et> wrote in message news:<LXkxb.742 9$Bv6.2253651@n ews1.epix.net>. ..[color=blue]
        > I know that this is possible and I now how it is possible.
        > But why would you want to call more than one function the same name to begin
        > with? Wouldn't it be just easier to call them 2 different names?
        >
        > Ex.
        > #include <string>
        > #include <iostream>
        > //why not integer_print and string_print??? ???
        > void print(int);
        > void print(string);
        >
        > int main()
        > {
        > string name = "test";
        > int a = 4;
        > print(a);
        > print(name);
        > return 0;
        > }
        >
        > void print(string name)
        > {
        > cout << name;
        > }
        >
        > void print(int a)
        > {
        > cout << a;
        > }[/color]

        It comes in particularly handy when used with operator overloading.
        For example, you wanted to overload operator<< to handle, say, a
        string and an int differently. You can't rename the operator, but you
        can overload it for te two types.

        As well, in C++, the types of the parameter form a part of the
        function name (which may, in your view, be a chicken-and-egg type
        problem). Adding the type to the name explicitly, as in print_string
        and print_int, is redundant repetition of the same information.

        Consider, also, the interaction of function overloading and templates.
        If you could not overload a function, how could you template it?

        --
        Stephen M. Webb

        Comment

        Working...