variable1 and variable2 will not be default constructed, but instead will be copy constructed.
It's basically the same idea as this:
1 2 3 4 5 6 7 8
string foo = "example";
string bar(foo); // copy construct bar
// vs
string bar; // default construct bar
bar = foo; // then reassign bar
Directly copy constructing is usually more efficient... and should be preferred. The default constructor for string doesn't now how much space it needs to allocate (if any) so it might allocate a small chunk, only to throw that chunk away immediately after it gets reassigned. Whereas if you copy construct, it immediately knows how big it needs to be in order to hold all the string data because you're giving it the string data up front.