2016-11-06 3 views
-2

저는 C++로 프로그래밍하는 것에 전혀 익숙하지 않고 생성자에 대해 배우고 있습니다. 전에 "초기화 목록"을 사용하는 것이 성능상의 이유로 클래스 변수를 초기화 할 때 클래스 생성자에서 본문 내부에 값을 할당하는 것이 더 낫다는 것을 전에 읽은 생성자에 대한 블로그 게시물에 나와 있습니다. 그러나 그 뒤에는 이유가 전혀 없습니다. 설명해 주시면 고맙겠습니다.초기화 프로그램 목록 C++의 성능?

+0

차이점은 컴파일러가 컴파일 타임에 그 (이니셜 라이저 목록)를 출력 할 수 있으며, 런타임시 본체에 코드를 작성해야합니다. –

+0

질문은 말이되지 않습니다. braced-init-list가하는 일은 초기화하려는 유형에 따라 크게 달라집니다. 따라서 이러한 코드의 성능에 대해 이야기하는 것은 일반적으로 특정 사례와 관련하여 만 수행 할 수 있습니다. –

+0

효과적인 C++ –

답변

1

처음에는 질문이 완료되지 않았습니다. 실제로 몇 가지 구체적인 경우가 있습니다. 그러나 단순성 :

class Foo { 
    ExampleType var; 
public: 
    Foo(ExampleType x):var(x) { 

    } 
}; 

첫째로의 복사 생성자 "ExampleType"클래스가 초기화라고 : 불이 꺼지고 이후 VAR는 (x)를 다음 "ExampleType"의 소멸자가 "X"에 대해 호출됩니다. 하지만 변수 할당의 경우에는 먼저 Example 유형에 대해 호출 된 생성자가 호출되고 할당 연산자가 호출되므로 소멸자가 호출됩니다.