[모던C++입문] 6.2 중복 제거
- 📕 Book/모던C++입문
- 2021. 7. 29.
중복 제거
- 상속과 암시적 업 캐스팅을 사용해 불필요한 멤버와 자유함수의 구현을 피할 수 있다.
- 클래스가 슈퍼 클래스로 암시적 형변환된다 공통 기능을 한번만 구현하고 모든 파생 클래스에서 이 공통 기능을 재사용 할수 있다.
- 다음 행렬의 예제와 같이 공통 기능을 한곳에서 구현하게 되면 모든 클래스의 변경사항을 즉시 적용 할 수 있다.
- 자유함수는 암시적 업 캐스팅 덕분에 파생된 모든 클래스에서 호출 가능하다
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(); }
반응형