본문 바로가기

Language/C++

C++ 클래스의 임시 객체

임시 객체

기본적으로 C문법에서
int a = 3 + 5;  
라는 코드를 입력하고 컴파일 하게 되면 a가 메모리에 올라가서 4바이트를 잡고 (32비트 운영체제 일때)
있다고 생각 하겠지만 실은 3과 5도 메모리에 올라가있다. 그래야 CPU가 처리를 하기 때문...
그럼 총 12바이트가 올라가게 되는데 a같은 경우는 함수가 끈날때 까지는 계속적으로 메모리에 로드되어
있지만 3 과 5는 저 라인이 끈나는 즉시 소멸 된다.
임시 객체는 이와 같다.

클래스 이름에 괄호를 치로 바로 멤버변수 값을 기제 하게 되는데 아래와 같다.
#include <iostream.h>
#include <string.h>


class A
{
    char name[20];
public:
    A(char* _name)
    {
        strcpy(name, _name);
        cout<<name<<"객체 생성"<<endl;
    }
    ~A()
    {
        cout<<name<<"객체 소멸"<<endl;
    }
};

int main(void)
{
    A a("a obj");
    cout<<"--------임시 객체 생성 전 -------"<<endl;
    A("temp a obj");//임시 객체
    cout<<"--------임시 객체 생성 후 -------"<<endl;

    return 0;
}

그닥! 쓸모 없어 보이지만 상당히 최적화된 라인을 형성할수 있다고 한다.
물론 컴파일러 마다 다르지만 코딩의 세련미가 상당히 돋보이게 할수도 있다네..;;;