【Programming】

[C++] 구조체(struct) 생성자

[一日一學, 一日一新] 2025. 4. 25. 16:36

구조체 생성자란 구조체를 생성과 동시에 내부 변수들의 값을 초기화 시키는 함수를 말한다.

  • A구조체처럼 생성자가 없이 선언 후 [1]처럼 하나씩 초기화 해도 된다.
  • B구조체처럼 생성자를 선언한 경우, [2]처럼 했을 시 생성자 오류가 난다.
    B구조체안에서 B()로 선언한 생성자가 없기 때문이다.
  • B구조체를 사용하고 싶다면 [3]처럼 해야한다.
  • C구조체처럼 C()로 선언한 생성자가 있는 경우, [5]처럼 해도 생성자 오류가 나지 않는다.
#include <iostream>

using namespace std;

struct A {
	int a, b, c;
};

struct B {
	int a, b, c;
	B(int _a, int _b, int _c) : a(_a), b(_b), c(_c) {}
};

struct C {
	int a, b, c;
	C(int _a, int _b, int _c) : a(_a), b(_b), c(_c) {}
	C() { a = 100; b = 200; c = 300; }
};

int main() {
	// [1]
	A struct1;
	struct1.a = 1;
	struct1.b = 2;
	struct1.c = 3;

	cout << struct1.a << endl;
	cout << struct1.b << endl;
	cout << struct1.c << endl;

	// [2] Error : No matching constructor for initialization of 'B'
	// B struct2;

	// [3]
	B struct2(4, 5, 6);

	cout << struct2.a << endl;
	cout << struct2.b << endl;
	cout << struct2.c << endl;

	// [4]
	C struct3(7, 8, 9);
	
	cout << struct3.a << endl;
	cout << struct3.b << endl;
	cout << struct3.c << endl;

	// [5] No Error - Overloading
	C struct4;

	cout << struct4.a << endl;
	cout << struct4.b << endl;
	cout << struct4.c << endl;

	return 0;
}

 

일반적인 알고리즘 문제를 풀 때 구조체 활용
https://taaewoo.tistory.com/7

 

[C++] 구조체 생성자 오버로딩 Struct Constructor Overloading

구조체 생성자란? 구조체를 생성과 동시에 내부 변수들의 값을 초기화 시키는 함수. C++에는 구조체와 비슷한 클래스가 존재하기 때문에 OOP(Object Oriented Programming)를 위해선 보통 클래스를 사용합

taaewoo.tistory.com

 

 

 

반응형