개인공부121 C++ Primer 14 학습목표 has-a 관계 객체 멤버를 가지는 클래스(컨테인먼트) valarray 템플릿 클래스 private 상속과 protected 상속 다중 상속 가상 기초 클래스 클래스 템플릿 만들기 클래스 템플릿 사용하기 템플릿 특수화 C++은 코드의 재활용성을 높이는 것을 추구함 이를 위해 클래스에 속하는 객체를 클래스 멤버로 사용하는 방법을 사용함 이 방법을 컨테인먼트(containment) / 컴포지션(composition) / 레이어링(layering) 이라고 부름 또는 private 상속이나 protected 상속을 사용함 위 방법들은 일반적으로 has-a 관계를 나타냄 14.1 객체 멤버를 가지는 클래스 라이브러리가 이미 적당한 클래스를 제공하고 있을 경우 그것을 사용하는 것이 훨씬 더 간단함 vala.. 2023. 2. 21. C++ Primer 13 Exercise 01 // classic.h #ifndef CLASSIC_H_ #define CLASSIC_H_ #include class Cd { private: char performers[50]; char label[20]; int selections; double playtime; public: Cd(char * s1, char * s2, int n, double x); Cd(); virtual void Report() const; }; class Classic : public Cd { private: char represent[30]; public: Classic(char * s1, char * s2, char * s3, int n, double x); Classic(); void Report() const; .. 2023. 2. 19. C++ Primer 13 학습목표 is - a 관계로 상속하기 다른 클래스로부터 public으로 파생된 클래스 protected 접근 생성자 멤버 초기자 리스트 업캐스팅과 다운캐스팅 가상 멤버 함수 초기 (정적) 결합과 말기 (동적) 결합 추상화 기초 클래스 순수 가상 함수 public 상속은 언제 어떻게 C++은 클래스를 확장하고 수정하기 위해 단순하게 코드를 수정하는 것이 아닌, 클래스 상속(class inheritance)라는 강력한 수단을 제공함 클래스 상속은 기초 클래스(base class)로부터 모든 메소드와 멤버들을 상속받아 새로운 파생 클래스(derived class)를 만들 수 있게 함 기존의 클래스에 기능을 추가할 수 있음 클래스가 나타내고있는 데이터에 다른 것을 더 추가할 수 있음 클래스 메소드가 동작하는 방.. 2023. 2. 19. C++ Primer 12 Exercise 01 // cow.h #ifndef XXX_H_ #define XXX_H_ class Cow { private: char name[20]; char * hobby; double weight; public: Cow(); Cow(const char * nm, const char * ho, double wt); Cow(const Cow & c); ~Cow(); Cow & operator=(const Cow & c); void ShowCow() const; }; #endif // cow.cpp #include "cow.h" #include #include Cow::Cow() { name[0] = '\0'; hobby = new char[1]; hobby[0] = '\0'; weight = 0; } Cow::Co.. 2023. 2. 19. 이전 1 ··· 20 21 22 23 24 25 26 ··· 31 다음