본문 바로가기

c++52

C++ Primer 15 Exercise 01 // tv.h #ifndef TV_H_ #define TV_H_ class Remote; class Tv { public: friend class Remote; enum {Off, On}; enum {MinVal, MaxVal = 20}; enum {Antenna, Cable}; enum {TV, DVD}; enum {NORMAL, CONVERSATION}; Tv(int s = Off, int mc = 125) : state(s), volume(5), maxchannel(mc), channel(2), mode(Cable), input(TV) {} void onoff() { state = (state == On) ? Off : On; } bool ison() const { return state ==.. 2023. 2. 21.
C++ Primer 15 학습목표 프렌드 클래스 프렌드 클래스의 메소드 내포된 클래스 예외 처리, try 블록, catch 블록 예외 클래스 RTTI(실행 시간 데이터형 정보) dynamic_cast와 typeid static_cast, const_cast, reinterpret_cast 15.1 프렌드 클래스도 프렌드가 될 수 있음 프렌드 클래스의 모든 메소드는 오리지널 클래스의 private 멤버 및 protected 멤버에 접근할 수 있음 어떤 클래스의 특정 멤버 함수들만 다른 클래스의 프렌드가 되도록 지정할 수 있음 프렌드 클래스 TV 클래스와 리모콘 클래스가 존재할때, 이 둘은 is-a도, has-a 관계도 아님 그러나 리모콘 클래스는 TV 클래스의 상태를 변경할 수 있으며, 따라서 리모콘 클래스를 TV 클래스의 프렌드.. 2023. 2. 21.
C++ Primer 14 Exercise 01 // winec.h #ifndef WINEC_H_ #define WINEC_H_ #include #include #include template class Pair { private: T1 a; T2 b; public: T1 & first(); T2 & second(); T1 first() const { return a; } T2 second() const { return b; } Pair(const T1 & aval, const T2 & bval) : a(aval), b(bval) {} Pair() {} }; typedef std::valarray ArrayInt; typedef Pair PairArray; class Wine { private: std::string name; int year_n.. 2023. 2. 21.
C++ Primer 14 학습목표 has-a 관계 객체 멤버를 가지는 클래스(컨테인먼트) valarray 템플릿 클래스 private 상속과 protected 상속 다중 상속 가상 기초 클래스 클래스 템플릿 만들기 클래스 템플릿 사용하기 템플릿 특수화 C++은 코드의 재활용성을 높이는 것을 추구함 이를 위해 클래스에 속하는 객체를 클래스 멤버로 사용하는 방법을 사용함 이 방법을 컨테인먼트(containment) / 컴포지션(composition) / 레이어링(layering) 이라고 부름 또는 private 상속이나 protected 상속을 사용함 위 방법들은 일반적으로 has-a 관계를 나타냄 14.1 객체 멤버를 가지는 클래스 라이브러리가 이미 적당한 클래스를 제공하고 있을 경우 그것을 사용하는 것이 훨씬 더 간단함 vala.. 2023. 2. 21.