In my experience, the compiler optimizes string literals by only making one copy of each unique string. If you add two lines:
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println((uint16_t)myObj1.foo, HEX);
Serial.println((uint16_t)myObj2.foo, HEX);
Serial.println((uint16_t)"hello world", HEX);
Serial.println((uint16_t)"hello world", HEX);
}
You will see that 117 gets displayed four times.