Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ > Streaming and O...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 2 Topic 43989 of 47561
Post > Topic >>

Streaming and Order of Precedence (II)

by Snorri <d.stonier@[EMAIL PROTECTED] > Mar 18, 2008 at 10:00 PM

Sorry, think I forgot to sign up before I sent the last post and the
message got deleted. Copied its contents below.

Hi all,

I've recently had some issues with the streaming operator and the
order of precedence used when mixing it with the member function
operator (operator .) Example code is below.

*************************************************************************
#include <iostream>
#include <vector>
using namespace std;

class A
{
    public:
        A() : i(0) {};
        int f() {
            i++;
            v.push_back(i);
            return i;
        }

        void reset() { i = 0; v.clear(); }

        int i;
        vector<int> v;
};

int main()
{
    A a;

    // Order of action:
    // - Member functions fire from RIGHT to LEFT.
    // - Insertion operators fire from LEFT to RIGHT
    cout << a.f() << a.f();
    cout << endl;

    cout << "Vector contents a: ";
    for (unsigned int i = 0; i < a.v.size(); ++i )
    {
        cout << a.v.at(i);
    }
    cout << endl;

    a.reset();
    int k;
    // Order of action;
    // - Member functions fire from LEFT to RIGHT
    // - Addition operator fires.
    // - Assignment operator fires.
    k = a.f() + 3*a.f();
    cout << "k: " << k << endl;
    cout << "Vector contents a: ";
    for (unsigned int i = 0; i < a.v.size(); ++i )
    {
        cout << a.v.at(i);
    }
    return 0;
}
*********************************************************************************
OUTPUT:
21
Vector contents a: 12
k: 7
Vector contents a: 12
*********************************************************************************

The result of this seems to indicate that the . operator for the
member function call has different associativities in the different
situations. I must be missing something here, but I haven't been able
to find anyone to give me a conclusive answer on it. Can anyone here
shed some light on it?

Cheers,
Daniel.
 




 2 Posts in Topic:
Streaming and Order of Precedence (II)
Snorri <d.stonier@[EMA  2008-03-18 22:00:43 
Re: Streaming and Order of Precedence (II)
"Victor Bazarov"  2008-03-19 10:07:33 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sun Sep 7 4:17:55 CDT 2008.