constructor에서 initializer list를 사용하면
object를 더 효율적으로 생성할 수 있다
# 내부에서 선언 vs. initializer list
내부에서 선언하는 코드는 아래와 같다
class A
{
public:
A()
{
m_b = B("param");
}
private:
B m_b;
};
A의 멤버변수인 m_b가 만들어질 때, B의 constructor를 호출하며 object를 만들고
A의 생성자 내부에서 "param"이 담겨있는 B의 constructor 통해 object를 만들고
m_b에 copy를 한다
이처럼 A의 멤버변수를 만들어내기 위해
B의 오브젝트를 두 번 만들고
copy도 한번 발생하니 효율이 좋지 않다
반면, initializer list를 이용하면
class A
{
public:
A()
: m_b("param")
{
}
private:
B m_b;
};
m_b가 만들어지는 순간 "param"이 담겨있는 B의 constructor를 호출하고
pass 해주기 때문에 B의 오브젝트는 단 한 번만 만들어지며
매우 효율적이다
'C++ > [노코프] Tips' 카테고리의 다른 글
[C++ Tips] 클래스/구조체 멤버 정렬 (0) | 2024.04.05 |
---|---|
[C++ Tips] switch case (0) | 2024.04.05 |
[C++ Tips] Unit Test (0) | 2024.04.05 |
[C++ Tips] random library (0) | 2024.04.04 |
[C++ Tips] const, constexpr (0) | 2024.04.04 |