본문 바로가기

Archived(CSE Programming)/cpp

(15)
Chap 7. 상속(Inheritance)의 이해 Chap 7. 상속(Inheritance)의 이해 7-1. 상속에 들어가기에 앞서 상속의 문제 상황에 대한 예시 제시.상속은 재활용을 위한 것이 아닌, 구체화(IS-A) 관계를 표현하기에 적절한 수단이다. 우리가 회사의 직원 봉급 관리 프로그램을 작성한다고 하였을 때,직원의 데이터를 저장하는 Data 클래스와 이러한 Data 클래스들을 관리하는 Control 클래스를 작성하였을 때,새로운 직원 형태(정규직, 알바, 인센티브 직, 등등)가 등장하면 기존의 Control 클래스에 많은 수정이 요구된다.그렇지만 이 때 Super 클래스를 작성해두고 이를 관리하는 Control 클래스를 두고 Data 클래스들은 Super 클래스를 상속하는 Sub 클래스로 둔다면 손쉽게 해결이 가능하다. 7-2. 상속의 문법적인..
Chap 6. friend와 static 그리고 const Chap 6. friend와 static 그리고 const 6-1. Const 기존의 Const는 기본 자료형 변수들에 대해서 선언하여 상수화 하는 것이 일반적인 사용법이었다.그런데, cpp에서는 객체에도 마찬가지로 상수화 선언을 통해서 상수 객체화할 수 있다.이 때, 상수화된 객체는 초기화 이후에 객체 내부의 멤버 변수를 변경할 수 없고, 상수 선언된 멤버함수만 호출 가능하다. 추가로 다음과 같이 const 객체에서 접근가능할 때와 일반 객체에서 접근가능할 때를 오버로딩 처리도 가능하다. 12void func(void){}void func(void) const {} // const cs 6-2. friend 선언 friend 선언은 말 그대로 친구의 의미로, 특정 클래스에서 class, 함수, 전역 함..
Chap 5. 복사 생성자(Copy Constructor) Chap 5. 복사 생성자(Copy Constructor) 5-1. 복사 생성자와의 첫 만남 우리는 기존의 c 스타일에서 초기화를 할 때,int num = 20; int & ref = num; 을 사용했다면 c++ 에서는 다음과 같은 초기화가 가능하다.int num(20); int & ref(num); 즉, 마찬가지로 대입연산에서도 이러한 의미를 지니게 되는 것이다. 12Object obj1(40);Object obj2 = obj1; // Object obj2(obj1)cs 이러한 초기화의 의미는 결국 생성자로 객체를 인자로 받았을 때 어떻게 처리할 지를 우리 c++ 프로그래머가 지정할 수 있는 것이다. 1234567891011121314151617Class Ex{private: int num1; int..
Chap 4. 클래스의 완성 Chap 4. 클래스의 완성 4-1. 정보은닉(Information Hiding) 객체 지향 프로그래밍에 있어서, 중요한 것을 클래스 설계인데, 이 클래스 설계에서 가장 중요한 두 가지는 정보은닉과 캡슐화이다.그 중에서 먼저, 정보은닉에 대해서 이야기하자면 정보은닉은 쉽게 말해서 클래스의 멤버변수 정보를 감추는 것인데, 타 클래스에서 접근하지 못하도록 설계하는 것이다. private으로 멤버변수를 설정하고 이를 접근할 수 있도록 public 함수들(get,set) 등을 설정해주는 방법을 통해 안전한 방법으로 멤버변수에 접근할 수 있도록 해주는 것이다. 추가적으로 멤버 함수에 const 선언을 해주면 해당 멤버변수 값을 변경하지 않도록 하여, 안정성을 높이는 효과를 가져온다.int getX(void) co..
Chap 3. 클래스의 기본 Chap 3. 클래스의 기본 3-1. c++ 에서의 구조체 기존의 c언어에서는 관련이 있는 data들을 하나의 struct 구조체 변수로써 선언하여 사용할 수 있었다.하나의 묶음 데이터(구조체)로 표현함으로써 관리면에서나 활용면에서 다양한 이점이 있을 수 있었다. 그런데, 추가적으로 이러한 변수와 함께 이 변수들이 활용하는 기능을 기존의 전역변수에서 특정 구조체 내부의 함수로 포함시켜 사용한다면 더욱 효율적으로 활용할 수 있을 것이다. c++에서는 이러한 이점을 고려하여 DATA + FUNCTION을 합쳐서 새로운 구조체, 즉, CLASS라는 객체 개념을 가져와서 활용한다.이러한 클래스를 정의하고 클래스 변수를 선언하게 된다면 이 변수 내부에는 data들과 함께 함수들도 독립적으로 구성되어 있다고 봐도 ..
Chap 2. C언어 기반의 C++ 2 Chap 2. C언어 기반의 C++ 2 2-1. 시작에 앞서 const 상수의 의미const int * ptr1 = &value; // 포인터 ptr1을 이용해서 value 값을 변경할 수 없습니다.int * const ptr1 = &value; // 포인터 ptr1 자체가 상수화 되었습니다. 2-2. 새로운 자료형 bool 기존의 true/false를 0이 아닌 것/ 0 으로 구분하던 것을 새롭게 표현한다.bool 자료형으로 true와 false를 할당할 수 있다. 2-3. 참조자(reference)의 이해 참조자란 기존의 할당되어 있는 변수 공간을 가르킬 수 있는 새로운 형태를 말하는 것이다.따라서 기존의 할당되어 있는 공간으로만 초기화 할 수 있으며, 초기화가 이루어진 후에는 변수처럼 사용이 가능하..
Chap 1. C언어 기반의 C++ Chap 1. C언어 기반의 C++ 1-1. printf와 scanf를 대신하는 입출력 방식 std::cout