문법 29

[C++ 기초 문법] 동적결합 Class Array

동적결합 Class Array 기초 클래스와 파생 클래스를 하나의 배열(Array)에 결합하여 변수를 초기화 해보자 [time.h] #include #ifndef TIMEH #define TIMEH class Time //기초 클래스 { private: int hours; int mins; public: Time(); Time(int, int); void addHours(int); void addMins(int); Time operator+(Time&); Time operator*(int); virtual void show(); virtual ~Time(); int getHour() { return hours; } int getMins() { return mins; } friend Time operato..

[C++ 기초 문법] 상속(Inheritance) virtual, public 다형

상속(Inheritance) virtual, public 다형 상속된 파생클래스에서 기초 클래스에 있는 public 함수를 사용하려면 어떻게 해야할까? 이전 글에서 알아본 Time 기초 클래스의 파생클래스인 NewTime에서도 Time 기초 클래스의 출력함수인 void show로 출력하려면 어떻게 해야할까? 기존 [time.h]에서는, Time 클래스는 show 함수로, NewTime 클래스는 print 함수로 클래스 멤버를 출력하였다. #include #ifndef TIMEH #define TIMEH class Time //기초 클래스 { private: int hours; int mins; public: Time(); Time(int, int); void addHours(int); void addMi..

[C++ 기초 문법] 상속(Inheritance) 기본, 파생 클래스

상속(Inheritance) 기본, 파생 클래스 상속(Inheritance)? ① 기존의 클래스에 새로운 기능을 추가할 수 있다 ② 클래스가 나타내고 있는 데이터에 다른 것을 더 추가할 수 있다 ③ 클래스 메서드가 동작하는 방식을 변경할 수 있다 [time.h] #include #ifndef TIMEH #define TIMEH class Time //기초 클래스 { private: int hours; int mins; public: Time(); Time(int, int); void addHours(int); void addMins(int); Time sum(Time&); //Time 클래스를 return하는 함수 sum의 원형 제공 void show(); ~Time(); }; #endif 위 헤더파일에..

[C++ 기초 문법] friend

friend friend 는 마치 친구처럼 수평적인 관계로 클래스간의 멤버 변수를 공유하기 위해 사용된다. 그렇기 때문에 friend를 활용하면, 자신뿐만 아니라 다른 타입의 클래스에도 접근하는 것이 가능해져 코드의 확장이 용이해진다. 다만, 클래스 내부에서만 써야할 멤버들이 다른 곳에서 계속 활용된다면, 데이터 보호가 어려울 뿐만 아니라 캡슐화를 지향하는 객체지향적인 설계가 어려우므로 꼭 필요한 곳에서만 활용하는 것이 좋다. [time.h] #include #ifndef TIMEH #define TIMEH class Time { private: int hours; int mins; public: Time(); Time(int, int); void addHours(int); void addMins(int..

[C++ 기초 문법] 연산자 오버로딩

연산자 오버로딩 이전에 알아본 함수의 오버로딩이란 것의 의미는 "여러 개의 함수를 같은 이름으로 연결하는 것"이었다. 연산자 오버로딩 또한 이와 유사하다. 이번 글에서는 직접 작성한 Class객체에 기본연산자인 + 를 오버로딩하는 코드를 작성해 볼 것이다. ① [time.h]에 Time 클래스 선언 및 함수 sum 원형 제공 아래와 같이 Time 클래스를 선언한 time.h 헤더파일의 퍼블릭 멤버에, Time 클래스끼리의 합산값을 출력해주는 함수 sum의 코드를 작성해 볼 것이다. #include #ifndef TIMEH #define TIMEH class Time { private: int hours; int mins; public: Time(); Time(int, int); void addHours(..

[C++ 기초 문법] 클래스 Array와 *this

클래스 Array 와 *this 아래 헤더파일에, Array 형태의 Stock 클래스 중 share_val의 값이 최대인 클래스를 출력하는 코드를 추가해보자. #ifndef STOCK #define STOCK #include using namespace std; class Stock { private: string name; int shares; float share_val; double total_val; void set_total() { total_val = shares * share_val; } public: void buy(int, float); void sell(int, float); void update(float); void show(); Stock(string, int, float); St..

[C++ 기초 문법] 클래스 생성자와 파괴자

클래스 생성자와 파괴자 아래와 같은 헤더파일에서, public 멤버의 함수인 acquire을 사용하지 않고 바로 Stock 클래스를 선언하려면 어떻게 해야할까? [stock.h] #ifndef STOCK #define STOCK #include using namespace std; class Stock { private: //비공개 멤버,클래스 내에서만 접근 가능 string name; int shares; float share_val; double total_val; void set_total() { total_val = shares * share_val; } public: //공개 멤버, 클래스 외부에서도 접근 가능 void acquire(string, int, float); void buy(int,..

[C++ 기초 문법] 추상화와 클래스

추상화와 클래스 추상화란? 어떤 객체를 사실적으로 표현하는 것이 아니라, 공통된 특징을 일정한 방식으로 이해하기 쉽게 표현하는 것이다 클래스란? 추상화를 사용자 정의 데이터형으로 변환해주는 수단이다 데이터형이란? 데이터형을 대상으로 어떠한 연산을 수행할 수 있는지 알 수 있다 private형 멤버와 public형 멤버를 가진 Class인 Stock을 정의해보자 ※ private vs public ① private 비공개 멤버, 클래스 내에서만 접근 가능하다 (데이터 은닉) ② public 공개 멤버, 클래스 외부에서도 접근 가능하다 ※ 예시코드 [stock.h] 헤더파일에 Stock 클래스 정의 및 함수의 원형 제공 #ifndef STOCK #define STOCK #include using namesp..