#Programming Language/C++

C++ About const and static. 1.C++ Initialization List of Constructor Apple::Apple() { price = 508; coord_x = coord_y = 0; amount = 10; origin = U.S.A; } 생성자 이름 뒤에 : price(500), coord_x(0), coord_y(0), amount(10), origin(U.S.A) {}로 오는 것을 초기화 리스트 (initializer list) 라고 부르며, 생성자 호출과 동시에 멤버 변수들을 초기화해주게 된다. Apple::Apple(int x, int y) : coord_x(x), coord_y(y), price(500), amount(10), origin(U.S.A) {} c..
C++ Constructors and destructors. 1.Introduction. 보통 어떠한 객체의 내부적 성질, 상태 등에 관련된 변수들은 모두 private 범주에 두고, 그 객체가 외부에 하는 행동들은 함수로써 구현하여 public 에 두면 된다고 한다. new 와 malloc 모두 동적으로 할당하지만 '무언가' 다르다고 했는데, new 의 경우 객체를 동적으로 생성하면서와 동시에 자동으로 생성자도 호출해준다. 2.C++ destructors 명확히 delete 를 지정하지 않는 한 자동으로 delete 가 되는 경우는 없다. 즉 동적으로 할당했던 X는 영원히 메모리 공간 속에서 둥둥 떠다닌다는 말.사실 몇 바이트 정도 밖에 되지 않을 것이지만 X들이 쌓이고 쌓이게 되면 메모리 누수 (Me..
C++ Template. 1.C++ Template 벡터(vector) 는 쉽게 생각하면 가변 길이 배열로 사용자가 배열 처럼 사용하는데 크기를 마음대로 줄이고 늘일 수 있는 편리한 자료형이다. 스택(stack)의 경우 나중에 들어간 것이 먼저 나온다(LIFO - last in first out) 형태의 자료형으로 pop 과 push 를 통해서 여러가지 작업들을 처리할 수 있다. 하지만 한 가지 문제는 담으려고 하는 데이터 타입이 바뀔 때 마다 다른 벡터를 만들어주어야 한다는 점이 있다. 예를 들어서 아래의 Vector 클래스를 살펴본다. class Vector { string* data; int capacity; int length; public: // 생성자 Vector(int n = 1) : dat..
C++ Creating excel part 2. 1.C++ Cell class extension Cell 클래스에는 string 데이터만 저장할 수 있기 때문에 이를 상속 받는 클래스들을 만들어서 셀에 다양한 데이터들을 보관할 수 있게 할 것이다. class Cell { protected: int x, y; Table* table; public: virtual string stringify() = 0; virtual int to_numeric() = 0; Cell(int x, int y, Table* table); }; 일단 기존의 Cell 클래스에서 문자열 데이터를 보관했던 것과는 달리 항목을 빼버리고, 이를 상속 받는 클래스에서 데이터를 보관하도록 했다. 또한, stringify 함수와 to_nume..
C++ Creating excel part 1. 1.C++ Creating excel. 본격적으로 Excel 을 구현하기에 앞서서, 몇 가지 자료 구조를 만들 것이다. 자료구조는 컴퓨터에서 데이터를 저장하는 방식이라 할 수 있는데,그 구현에 따라서 장단점이 각각 있다. => 장점만을 가진 자료 구조는 없다. Excel 프로그램에서 사용할 자료구조는 크게 Vector 와 Stack. 참고로 이들은 수식을 분석하기 위해, 즉 ExprCell 객체의 to_numeric 함수 내에서 사용될 예정이다. 각 자료구조들은 다음과 같은 특징을 가지고 있다. 벡터 (Vector) : 수학의 그 벡터와는 살짝 다른 느낌인데, 배열의 크기를 맘대로 조절할 수 있는 가변길이 배열이라 보면 된다. 즉, 배열 처럼 [] 연산자로..
C++ I / O in C++ 1.C++ I / O library in c++ C++의 모든 입출력 클래스는 ios_base 를 부모 클래스로 하게 된다. ios_base 클래스는 많은 일은 하지 않고, 스트림의 입출력 형식 관련 데이터를 처리 한다. 예를 들어서 실수 형을 출력할 때 정밀도를 어떤 식으로 할 것인지에 대해, 혹은 정수형을 출력 시에 10진수로 할지 16진수로 할지 등을 이 클래스에서 처리 한다. 그 다음으로 ios 클래스가 있다. 이 클래스에서는 실제로 스트림 버퍼를 초기화 한다. 스트림 버퍼란, 데이터를 내보내거나 받아들이기 전에 임시로 저장하는 곳이라 볼 수 있다. 쉽게 설명하자면, 예를 들어서 하드디스크에서 파일을 하나 읽는다고 해보자. 만일 사용자가 1 바이트 씩 읽는 다고 했을..
C++ Virtual functions and inheritance. 1.C++ Visual destructor 사실 클래스의 상속을 사용함으로써 중요하게 처리해야 되는 부분이 있다. 바로, 소멸자를 가상함수로 만들어야 된다는 점이다.Child 객체를 만든 부분을 살펴본다. cout
C++ Virtual function. 1.C++ ls - a and has - a 일단 이야기를 진행하기 전에, 어떠한 경우에서 상속을 사용하는지 생각해본다. C++ 에서 상속을 도입한 이유는 단순히 똑같은 코드를 또 쓰는 것을 막기 위한 Ctrl + C, Ctrl + V 방지용으로 위한 것이 아니다. 실제 이유는 상속이라는 기능을 통해서 객체지향프로그래밍에서 추구하는 실제 객체의 추상화를 좀 더 효과적으로 할 수 있게 되었다.상속이란 것이 없던 C 언어에서는 어떠한 구조체 사이의 관계를 표현할 수 있는 방법이 없었다. 하지만 C++ 에서 상속이란 것을 도입함으로써, 클래스 사이에 관계를 표현할 수 있게 되었는데, 예를 들어서 Manager 가 Employee 를 상속한다.class Manager : ..
Allblackk
'#Programming Language/C++' 카테고리의 글 목록