C++
생성자의 다양한 사용 방법
코다람쥐
2021. 12. 23. 12:11
https://www.youtube.com/watch?v=2rXLncQD27c&list=PLlJhQXcLQBJqywc5dweQ75GBRubzPxhAk&index=62
1. 생성자와 디폴트 매개변수
class Complex {
public:
Complex(double real_=0, double imag_=0) {
real = real_;
imag = imag_;
}
위와같이 디폴트 매개변수를 사용하여 생성자를 사용할 수 있다.
2. 생성자 초기화 목록
class Complex {
public:
Complex(double real_ = 0, double imag_ = 0) : real(real_), imag(imag_){ }
1. 의 코드를 이렇게 간결하게 표현이 가능하고 이것을 초기화 목록이라고 한다.
Complex(double real = 0, double imag = 0) : real(real), imag(imag){ }
위와같이 초기화 목록을 쓰면 멤버변수와 매개변수가 c++에서 자동으로 구별 되는 기능이있다.
real_ => real
imag_ => imag
3. 생성자 위임
형태
생성자 : 생성자위임 { }
아래는 시간을 입력받아서 시, 분, 초를 저장하는 클래스이다.
class Time {
public:
Time() : h(0), m(0), s(0) { }
Time(int s_) {
s = s_;
}
Time(int m_, int s_) {
m = m_;
s = s_;
}
Time(int h_, int m_, int s_) {
h = h_;
m = m_;
s = s_;
}
private:
int h;
int m;
int s;
};
이 코드를 생성자 위임을 쓰면 아래와 같은 코드로 바뀐다.
#include <iostream>
using namespace std;
class Time {
public:
Time() : h(0), m(0), s(0) { }
Time(int s_) : Time() {
s = s_;
}
Time(int m_, int s_) : Time(s_) {
m = m_;
}
Time(int h_, int m_, int s_) : Time(m_, s_) {
h = h_;
}
private:
int h;
int m;
int s;
};
생성자 위임을 쓰면 실수를 줄일 수 있고 코드가 더 간결해보인다.
그리고 초기화목록과 햇갈리지 않게 주의 해야한다.