C++ Standard String & Inheritance. 1.C++ Standard string class C 스타일의 문자열은 여러가지 문제점들이 많기 때문에 (예를 들어 문자열의 길이를 한 번에 알 수 없고 마지막 NULL 문자까지 하나 하나 읽어야 된다.) 문자열을 처리할 수 있는 새로운 무언가가 계속 필요해야 했다. 예전에 만든 MyString 클래스도 문자열 처리를 꽤나 훌륭하게 하지만, 실제로 속도가 매우 중요한 환경에서 그대로 쓰기에는 부족한 점이 많다. 대신에 string 이라는 빠르고, 안전하고 사용하기 매우 간단한 문자열 클래스가 표준으로 채택이 된다.string은 매우 빠르고 안전함에도 사용방법은 간단하다. #include #include using namespace std; /..
#Programming Language/C++
C++ Various overloading part 2. 1.C++ style casting C에서는, 캐스팅은 크게 2 가지 방법으로 발생한다. 하나는 그냥 컴파일러에서 알아서 캐스팅 하는 암시적(implicit) 캐스팅과, 직접 ~!@#$하게 캐스팅 하라고 지정하는 명시적(explicit) 캐스팅이 있다. 암시적 캐스팅의 경우 int 와 double 변수와의 덧셈을 수행할 때, int 형 변수가 자동으로 double 변수로 캐스팅 되는 것과 같은 것을 말하고, 명시적 캐스팅의 경우 예를 들어 void * 타입의 주소를 특정 구조체 포인터 타입의 주소로 바꾼다던지 등의 캐스팅이 있다.명시적 캐스팅은 아래와 같다. ptr = (Something *)other_ptr; int_variable = (int)..
C++ Various overloading. 1.C++ Friend keyword friend Complex operator+(const Complex& a, const Complex& b); Complex operator+(const Complex& a, const Complex& b); 함수는 이제 Complex 의 friend 가 된다. 즉 Complex 클래스의 입장에서는 자신의 새로운 친구인 operator+ 에게 마음의 문을 열고 모든 정보에 접근할 수 있도록 허가하는 것이다. private 냐 public 이냐에 관계 없이 Complex operator+(const Complex& a, const Complex& b); 함수는 어떤 Complex 객체라도 그 내부 정보에 접근할 수 있다. C..
C++ Operator overloading. 1.Introduction C++ 에서는 사용자 정의 연산자를 사용할 수 있다. 무슨 연산자들이 가능하냐면, :: (범위 지정), . (멤버 지정), .* (멤버 포인터로 멤버 지정) 을 제외한 모든 연산자를 사용할 수 있다. +, -, * 는 물론이고, +=, -= 와 같은 축약형들이나 >=, ==, 와 같은 비교 연산자, && 와 같은 논리 연산자, -> 와 같은 멤버 선택 연산자, ++, -- 증감 연산자, [] 와 심지어 () 까지 (함수 호출 연산자) 도 모두 직접 만들 수 있다. 기본 연산자들을 직접 사용자가 정의하는 것을 연산자를 오버로딩(overloading) 한다고 부른다. 이전에 같은 이름의 함수를 인자만 다르게 사용하는 것을 '함수를 오버..
C++ Your own string class. 1.Introduction. 문자열 클래스를 만들어보자. 문자열 클래스는 아패와 같은 내용들을 지원해야 한다. 문자(char) 로 부터의 생성, C 문자열 (char *) 로 부터의 생성. 문자열 길이를 구하는 함수. 문자열 뒤에 다른 문자열 붙이기. 문자열 내에 포함되어 있는 문자열 구하기. 문자열이 같은지 비교. 문자열 크기 비교 (사전 순). 기존 C에서는 문자열을 나타내기 위해 널 종료 문자열(Null-terminating string)이라는 개념을 도입해서 문자열 끝에 NULL 문자를 붙여 문자열을나타내는 방식을 사용하였다. C++에서는 표준 라이브러리로 string 킇해스를 지원하고 있다. 일단 간단히 생각해서 우리가 만들 MyString 클래스..
C++ Object-oriented programming. 1.C++ Function overloading. 함수 오버로딩이란 쉽게 말해 함수에 과부하를 주는 거라고 할 수 있다.C에서는 하나의 이름을 가진 함수는 딱 1개 씩만 존재하기 떄문에 함수 오버로딩이랑 상관 없다. Ex) scanf, printfC++에서는 같은 이름을 가진 함수가 여러 개 있어도 된다. #include using namespace std; void print (int x) { cout
C++ Everything in an object. 1.What is an object? 간단한 예제로 시작해보겠다. Deepsleep boy; boy.play(); // 내가 (boy가) Play 를 한다. boy.sleep(); // 내가 deepsleep 을 한다. play 함수에 boy를 인자로 주지 않아도 되는데, 내가 play를 하는 것이기 때문에 내 정보는 이미 play함수가 다 알고 있는 상황이다. play함수는 나의 모든 것을 알고 있기에 낭 대한 적절한 처리를 할 수 있게 된다. 즉 boy는 상태를 알려주는 변수와, 하는 행동을 수행하는 함수들로 구성되고 있다. 결국 객체는 변수들과 관련된 함수들로 이루어진 소프트웨어 꾸러미. 아래 그림과 같은 느낌? 객체는 자기만의 정보를 나타내는 변..
C++ Features of C ++ only. 1.Features of C ++ only. 언제나 메모리를 관리하는 문제는 중요했다. 그래서 컴파일 시에 모든 변수의 주소값이 확정되어야만 했다.제약이 있기 때문에 피하기 위해서 힙(Heap)이라는 공간이 따로 생겼다. 힙(Heap)은 자유롭게 할당하고, 해체할 수 있는 공간으로써 원하는 만큼 사용할 수 있는 공간이다.cf) 스택은 컴파일러에 의해 완벽히 확정되어 안정성이 보장된다.힙(Heap)은 사용자가 스스로 제어해야 하는 부분이다.C++도 C와 마찬가지로 malloc과 free함수를 지원하여 힙의 할당을 지원한다.여기에 C++은 new와 delete가 있다. new는 malloc과 대응하는 것이고, delete는 free에 대응하는 것으로 메모리를 ..