[ C++ 20 ] Designated Initialization

Minsu._.Lighting·2024년 2월 27일
0

📔 [ Modern C++ / C# ]

목록 보기
6/8

💡 Designated Initialization?

  • 지정 초기화

  • Aggregate Initialization을 사용하기 위해 붙는 조건들을 맞춰줄 필요 없이 사용 가능 하다

    [ Aggregate Initialization을 사용하기 위한 조건 ]
    - 사용자 정의 생성자가 없어야 함
    - 가상 함수가 없어야 함
    - private, protected, static 데이터 변수는 사용 불가

    📢 그렇다고 사용할 때 조건이 없는 것은 아니다!



💡 Designated Initialization 사용 방법!

📌 Aggregate Initialization

class Pos3D
{
public:
	int iX;
    int iY;
	int iZ;
    
    ...
}

Pos3D pos{1, 2, 3};
  • 특정 데이터 변수만 초기화를 해줄 수 없기 때문에, 만약 Pos3D의 데이터 변수들이 많다면 그 만큼 초기화 해줘야하는 번거로움이 생긴다.
    - Pos3D pos{1, 2, 3, 4, 5, 6, 7, 8, ... 999}

  • 축소 변환이 일어난다.
    - Pos3D pos{1, 2, 3.f}

📌 Designated Initialization

class Pos3D
{
public:
	int iX;
    int iY;
	int iZ;
    
    ...
}

Pos3D pos{.x = 1, .y = 2, .z = 3};
  • 특정 데이터 변수만 초기화를 해줄 수 있다!
    - Pos3D pos{.x = 1, .z = 3};

  • 축소 변환이 일어날 경우 컴파일러 에러가 발생해 실수를 방지할 수 있다!
    - Pos3D pos{1, 2, 3.f}

  • 하지만 데이터 변수 선언 순서에 맞게 초기화를 해줘야 한다!
    - Pos3D pos{.z = 3, .x = 1} 불가능!

profile
오코완~😤😤

0개의 댓글

관련 채용 정보