임시 객체
기본적으로 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;
}
그닥! 쓸모 없어 보이지만 상당히 최적화된 라인을 형성할수 있다고 한다.
물론 컴파일러 마다 다르지만 코딩의 세련미가 상당히 돋보이게 할수도 있다네..;;;
기본적으로 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;
}
그닥! 쓸모 없어 보이지만 상당히 최적화된 라인을 형성할수 있다고 한다.
물론 컴파일러 마다 다르지만 코딩의 세련미가 상당히 돋보이게 할수도 있다네..;;;