C++/공부내용
C++ Classes - Constructors
HappyFrog
2022. 6. 29. 17:38
생산자
C++에서의 생산자는 클래스의 객체가 생성될 때 자동적으로 호출되는 특별한 메서드입니다.
생산자를 생성하기 위해서 소괄호 ( ) 가 따라오는클래스와 같은 이름을 사용합니다:
예시
#include <iostream>
using namespace std;
class MyClass
{
public:
MyClass() {
cout << "Hello World!";
}
};
int main() {
MyClass myObj;
return 0;
}
참고: 생산자는 클래스와 같은 이름을 가지며 항상 public 입니다. 그리고 반환값이 없습니다.
생산자 매개변수
생산자는 또한 속성의 초기 설정을 위해 일반 함수들처럼 매개변수를 가질 수 있습니다.
아래 예시의 클래스는 brand , model 그리고 year 속성과 또 다른 매개변수를 취하는 생산자를 갖고 있습니다. 생산자 내부에서 우리는 생산자의 매개변수( brand = x 와 같이)와 속성을 갖게 설정할 수 있습니다. 우리가 생산자를 호출할 때( 클래스의 객체를 생성함으로써), 우리는 생산자에 대응되는 속성을 같은 값으로 맞춰줄 수 있는 매개변수를 전달할 수 있습니다.
예시
#include <iostream>
using namespace std;
class Car { // 클래스
public: // 접근지정자
string brand; // 속성
string model;
int year;
Car(string x, string y, int z) { // 매개변수가 있는 생산자
brand = x;
model = y;
year = z;
}
};
int main() {
// Car 객체 생성하고 서로 다른 값으로 생산자 호출
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// 값 출력
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year ;
return 0;
}
함수와 같이 생산자는 클래스 바깥에서 선언될 수 있습니다. 먼저, 클래스 내부에 생산자를 선언하고 그 다음에 클래스 바깥에서 클래스의 이름을 특정하고 범위 지정 연산자 :: 달아주고 생산자의 이름(클래스의 이름과 같은)을 달아주면 됩니다.
예시
#include <iostream>
using namespace std;
class Car { // 클래스
public: // 접근지정자
string brand; // 속성
string model;
int year;
Car(string x, string y, int z); // 생산자 선언
};
int main() {
// Car 객체 생성하고 서로 다른 값으로 생산자 호출
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// 값 출력
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year ;
return 0;
}
// 생산자 정의
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}