ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 생성자의 다양한 사용 방법
    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
Designed by Tistory.