2012-02-07 6 views
1

값 비싼 생성자가있는 클래스가 있다고 가정 해 봅시다. 생성자를 "간단"하기 때문에 생성자를 만들 필요가 없다고합시다. 수업 시간에 저는 typedef를 넣고 싶습니다. 내가 할클래스 내의 typedef

class Expensive { 
public: 
    typedef double data_type; 
    data_type data[100000][100000]; 
}; 

이제 내 호출 코드에서, 경우 :

Expensive::data_type singleValue; 

Expensive의 임시 인스턴스를 생성하고 데이터에 대한 모든 공간을 할당하려고한다는 것입니다 모두 함께, 그것은 같이 보입니다 typedef에 액세스하려면?

+0

행운을 스택에 할당합니다. 왜 당신은'data_type 데이터 [100000] [100000]; 쓰지 않는거야? –

+1

질문을 강조하는 것은 고의적 인 예였습니다. Intel 컴파일러를 사용하고 실제로이를 사용하기를 원한다면 어쨌든 모든 배열을 힙에 넣을 플래그가 있습니다. 또는 내 스택을 무제한으로'ulimit'하십시오. – tpg2114

+0

괜찮 았지만 (a) 코드가 좋지 않아서 (b) 대부분의 구성에서 작동하지 않으므로 어리석은 예입니다. –

답변

3

간단히 말해서 : 아니오. 작업에는 런타임 효과가 전혀 없습니다. double을 선언하는 것만으로도 런타임시 사용하지 않을 때 아무런 영향을 미치지 않을 수도 있습니다.)

0

아니요; 당신은 실제로 클래스의 정적 멤버 인 것을 액세스하고 있습니다. 인스턴스가 생성되지 않으므로 거대한 배열이 없습니다.