본문 바로가기

공부/c++

임시 객체와 소멸 시기

반응형

1. 임시 객체

임시 객체는 수식의 계산 도중에 중간 결과를 저장하기 위하여 임시적으로 만들어지는 객체이다.

 

2. 임시 객체 생성 예

void main()

{

string s1 = "Hello ";

string s2 = "World";

const char* p = (s1 + s2).c_str();

cout << p;

}

위 코드를 실행하면 화면에 아무것도 안뜨게 된다.

왜냐하면 p가 가리키는 주소는 s1 + s2 연산결과를 담는 임시 객체의 주소를 가리키게 되는데 임시객체는 해당 문장이 끝나면 자동으로 소멸하게 된다.

그렇기 때문에 p를 출력하는 시점에서는 해당 주소에 아무것도 없기때문에 출력이 되지 않는다.

그렇기 때문에 프로그래머가 명시적으로 객체를 생성하여 임시 객체에 있는 내용을 담아서 포인터가 명시적으로 생성한 객체를 가리키게 하여야한다.

 

void main()

{

string s1 = "Hello ";

string s2 = "World";

string s3 = s1 + s2;

const char* p = s3.c_str();

cout << p;

}

또한 임시 객체는 함수가 객체를 반환할 때도 생성된다.

반응형