소프트웨어 공부/프로그래밍

컨스트럭터 내에서 할당 대신 초기화를 사용하라

야곰야곰+책벌레 2021. 4. 20. 15:07
728x90
반응형

한 번 설정하고, 여러 곳에서 활용하자. 컨스트럭터 내에서 멤버 변수의 설정을 위한 할당 대신 초기화를 사용하면

불필요한 런터임 작업과 타이핑을 줄일 수 있다. 컨스트럭터는 내부적으로 초기화 코드를 만들어낸다. 다음 코드를 보자.

class A {
    string s1_, s2_;
public:
    A() { s1_ = "Hello,"; s2_ = "World"; }
};

실제로는 여러분이 다음과 같이 작성한 것처럼 컨스트럭터의 코드가 만들어진다.

A() : s1_(), s2_() { s1_ = "Hello,"; s2_ = "World"; }

즉 직접 초기화하지 않은 개체는 표준 컨스트럭터를 통해 자동으로 초기화되고, 할당 연산자를 통해 할당된다는 것이다.

주요한 개체의 할당 연산자는 이미 만들어진 개체를 다룬다는 이유 때문에 컨스트럭터보다 더 중요한 역할을 하게 된다.

따라서 초기화 목록 내에서 멤버 변수를 초기화하는 것이, 보다 명확하게 의도를 드러내주고, 더 간결하며 빠르다.

A() : s1_("Hello,"), s2_("World") {}

이는 성급한 최적화라기보다는 적절한 습관을 통한 최적화라고 볼 수 있다.

728x90
반응형