-
생성자의 다양한 사용 방법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; };
생성자 위임을 쓰면 실수를 줄일 수 있고 코드가 더 간결해보인다.
그리고 초기화목록과 햇갈리지 않게 주의 해야한다.
'C++' 카테고리의 다른 글
정적 멤버 (2) (0) 2021.12.23 정적 멤버 (1) (0) 2021.12.23 객체의 생성과 소멸 (0) 2021.12.21 this 포인터 (0) 2021.12.21 클래스 = 구조체??, 접근제어지시자 (0) 2021.12.21