12.7 Non-static member initialization
https://www.learncpp.com/cpp-tutorial/non-static-member-initialization/
우리는 non-static한 member init을 할 수 있다
#include <iostream>
class Rectangle
{
private:
double m_length{ 1.0 };
double m_width{ 1.0 };
public:
Rectangle(double length, double width)
: m_length{ length },
m_width{ width }
{
// m_length and m_width are initialized by the constructor (the default values aren't used)
}
Rectangle(double length)
: m_length{ length }
{
// m_length is initialized by the constructor.
// m_width's default value (1.0) is used.
}
void print()
{
std::cout << "length: " << m_length << ", width: " << m_width << '\n';
}
};
int main()
{
Rectangle x{ 2.0, 3.0 };
x.print();
Rectangle y{ 4.0 };
y.print();
return 0;
}
위의 코드를 보면 member variable 선언과 동시에 {1.0}으로 init을 하고 있는 것을 알 수 있다
만약 initalizer list로 해당 member variable을 초기화 하지 않는 다면
default 값이 그대로 초기화에 사용될 것임을 암시한다
따라서 위의 코드의 출력은 다음과 같다
length: 2.0, width: 3.0
length: 4.0, width: 1.0
참고로 non-static member initialization의 초기화 방법은 다음과 같다
class A
{
int m_a = 1; // ok (copy initialization)
int m_b{ 2 }; // ok (brace initialization)
int m_c(3); // doesn't work (parenthesis initialization)
};
() 괄호 초기화는 지원하지 않는다
Author And Source
이 문제에 관하여(12.7 Non-static member initialization), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ikmy0ung/12.7-Non-static-member-initialization저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)