Sign in to follow this  

initialization on construction

This topic is 4377 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

In the end, once this has been compiled, are there any differences between those two :
// initializer list
class foo {
public:
    foo(int value) : bar(value) {}

private:
    int bar;
}

// explicit initialization
class foo {
public:
    foo(int value) {
        bar = value;
    }

private:
    int bar;
}
I'm wondering if it's just a matter of preferences or there is some point for using one or the other...

Share this post


Link to post
Share on other sites
For ints, the compiler will probably generate the same machine code. For class types, the first one is more efficient as the second one will generate a call to the default constructor followed by a call to the assignment operator (unless the compiler has access to the code for both and can optimize it out).

Share this post


Link to post
Share on other sites

This topic is 4377 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this