[모던C++입문] 6.2 중복 제거

    중복 제거

    • 상속과 암시적 업 캐스팅을 사용해 불필요한 멤버와 자유함수의 구현을 피할 수 있다.
    • 클래스가 슈퍼 클래스로 암시적 형변환된다 공통 기능을 한번만 구현하고 모든 파생 클래스에서 이 공통 기능을 재사용 할수 있다.
    • 다음 행렬의 예제와 같이 공통 기능을 한곳에서 구현하게 되면 모든 클래스의 변경사항을 즉시 적용 할 수 있다.
    • 자유함수는 암시적 업 캐스팅 덕분에 파생된 모든 클래스에서 호출 가능하다
    class base_matrix
    {
    public:
        base_matrix(size_t nr, size_t nc) : nr(nr), nc(nc) { }
        size_t num_rows() const { return nr; }
        size_t num_cols() const { return nc; }
    
    private:
        size_t nr, nc;
    }
    
    class dense_matrix : public base_matrix
    { ... };
    
    class compressed_matrix : public base_matrix
    { ... };
    
    class banded_matrix : public base_matrix
    { ... };
    
    
    inline size_t num_rows(const base_matrix& A)
    { return A.num_rows(); }
    
    inline size_t num_cols(const base_matrix& A)
    { return A.num_cols(); }
    
    inline size_t size(const base_matrix& A)
    { return A.num_rows() * A.num_cols(); }
    반응형

    댓글

    Designed by JB FACTORY