C++ Primer32 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. C++ Primer 12 학습목표 클래스 멤버를 위한 동적 메모리 대입 암시적/명시적 복사 생성자 암시적/명시적 오버로딩 대입 연산자 생성자에 new 사용하기 static 클래스 멤버 객체에 위치지정 new 사용하기 객체를 지시하는 포인터 큐 ADT 구현 12.1 동적 메모리와 클래스 사용할 메모리의 크기를 컴파일할 때 결정하지 않고 프로그램 실행시에 상황에 따라 융통성있게 결정하는 것이 더 유용함 따라서 C++에서는 new와 delete를 클래스와 함께 사용하게되며 생성자와 파괴자를 다루는데 주의가 필요함 복습을 위한 예제와 static 클래스 멤버 // strngbad.h #include #ifndef STRINGBAD_H_ #define STRINGBAD_H_ class StringBad { private: char * s.. 2023. 2. 19. 이전 1 2 3 4 5 6 ··· 8 다음