반응형
구조체 생성자란 구조체를 생성과 동시에 내부 변수들의 값을 초기화 시키는 함수를 말한다.
- 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
반응형
'【Programming】 > C++' 카테고리의 다른 글
C++ 파벌 싸움으로 대신 선택되는 Rust (레거시 호환성 vs 모던 툴링으로 분열) (0) | 2025.04.25 |
---|---|
[Book] 제네릭 프로그래밍과 디자인 패턴을 적용한 Modern C++ Design (0) | 2010.10.24 |