삽질의 현장/- C++ 34

#014_시(c)시(c)해서 C++?!_cout과 endl 흉내내기

안녕하세요 삽잡이입니다... 이번시간에는 우리가 자주 사용하던 cout 기능의 메서드와 endl 을 알아보고자합니다. cout은 iostream에 속해있는 메서드입니다. 그 중에서 ostream 이라는 클래스에 포함되어있죠... 우리는 이 ostream 클래스 안에 있는 cout이라는 친구를 사용하여 출력을 하고 있었습니다... 이전 시간까지 배워온 연산자 중복정의를 응용하여서cout의 기능을 흉내내보려고 합니다... 비록 완벽하진 않지만아.. cout은 이런식으로 구현되있구나라는 것을 맛만 봐보도록 하겠습니다...대충 감이 오실걸요~? 확인해보도록 하죠... 123456789101112131415161718192021222324252627282930313233343536373839404142434445..

#013_시(c)시(c)해서 C++?!_ 대입 연산자 중복 정의

안녕하세요 삽잡이입니다~ 이번 시간에는 대입 연산자에 대한 중복 정의를 해보려고 합니다... 대입과 같은 경우에는 ' = ' 의 연산자를 사용합니다.우항에 있는 값을 좌항에 대입하는 것이죠... 즉 메모리를 덤핑한다고 합니다...그렇다면 객체 또한 대입 연산을 할 수 있겠죠...하지만 객체는 우리가 정의하는 타입에 의해 생성되니 당연하게 연산자 중복 정의를 해야합니다... 하지만 그전에, 한가지 생각해보죠...이전에도 배운 것이었는데... Sap sap1(4, 2);Sap sap2 = sap1; 이와 같이 코드를 작성한다면, 어떤 듯이 될까요? 위에서 말한 대입연산? 아닙니다... C++에서는 Sap sap2 = sap1; 이라고 하는 것 자체가Sap sap2(sap1); 라고 할 수 있다고 했었습니다...

#012_시(c)시(c)해서 C++?!_ 배열의 인덱스 연산자 중복정의

안녕하세요 삽잡이입니닷... [] 연산자는 배열을 쓸 때 많이들 보셨죠? 또한 * 의 기능과 같은 역활을 수행한다고 했었죠...주소 앞/ 뒤에 붙였을 떄 그 주소에 있는 값을 나타내는... 예를들어 [] 연산자는 sap[n];즉, sap이라는 주소에서 +n번째 메모리를 의미하는 것이죠. 이 연산자는 동일한 자료형들을 보관하는 컬렉션에서 접근하기 위한 용도로 사용됩니다...이 또한 우리는 중복정의할 수 있습니다. 우선 비교를 통해 살펴보도록 하겠습니다... int arr[10];arr[4] = 2; 이와같은 arr 배열의 4번째 index에 2를 입력했을 때에 int형 arr의 주소의 4번째 메모리에 2의 값이 들어갑니다... 하지만, 객체의 입장에서 살펴보도록 하겠습니다. 12345678910111213..

#011_시(c)시(c)해서 C++?!_ 이항 연산자 중복정의

안녕하세요 삽잡이 입니다~ 이번 시간에는 연산자 중복 정의에 대해서 알아보려고 합니다...시작하죠 푸하하... 1+1 가 뭔가요? 귀요미 아니죠... 2입니다... 껄껄껄 우리는 당연하게 1+1은 2라고 합니다.. 그런데 말입니다...이 '+' 라는 기능을 C++에서는 개발자 마음대로 중복 정의를 할 수 있게 됩니다...이름하여 연산자 중복정의 (연산자 오버로딩) 라고 합니다... 이 연산자 중복정의는,제공하는 개발자가 사용하는 개발자에게 편의를 주기 위해서 제공하는 기능입니다.왜냐, 어차피 이런 연산자 중복정의해봤자 일반 사람이 쓰겠습니까? ㅎㅎ결국은 개발자가 사용할 것이니,제공하는 개발자가 사용하는 개발자에게.... 라는 말로 설명을 드렸습니다. 1+1, 4-2, 9*3 등등... 피 연산자들이 기존..

#010_시(c)시(c)해서 C++?!_ 잡다구리한 것들... (싱글톤, 기능성, 다형성)

안녕하세요 삽잡이입니다... 오늘은 굳이 C++과 연관 있으려나 할 부분도 있겠지만,C++ 공부를 위해 키보드좀 두드리면서... 개인적으로 정리하고픈 것들을 올리는 시간을 가지도록 하겠습니닷... 1. 싱글톤 패턴 (Singleton Pattern) 우선... 싱글톤 패턴이라는 것은... 간략하게딱 하나의 객체만을 생성하도록 고정하는 패턴입니다...그 한 객체에만 접근할 수 있도록 하는 것이죠... 예를들어 Sap 학교 1-3 반 학생들을 관리하는 출석부가 있다고 가정해보죠...그 출석부 안에는 많은 학생들의 정보가 써있을 터이지만출석부는 하나면 충분합니다... 당연히 한권이겠죠... 이를 코드에서 표현하자면 이와 같이 되는 것이죠... 1234567891011121314class 출석부{ static ..

#009_시(c)시(c)해서 C++?!_프로토 타이핑 ...

안녕하세요 삽잡이입니다~ 오늘은 잠시 쉬어가는? 사실 쉬지 않습니다... 푸하하... 아무튼.. 오늘 들은 것이 있는데...프로토 타이핑에 대해서 들을 기회가 있었습니다~간략하게 소개를하자면.... 자... 여러분은 회사에 계십니다... 자 상상의 나라에 들어가 봅시다... 고갱님께서 돈을 주시며 저희에게 SW 개발 요청을 하셨습니다...그런데 말입니다... 우리가 어떻게 항상 요구사항에 맞게 완벽히 개발을 진행할 수 있겠습니까... 이와 같이 회사에서 고갱님들께서는 시각적으로, 화면 정의 하는 부분들에 대해서수정 및 추가하는 요구를 하실때가 많다고 하십니다... 다 구현해놨는데... 갑자기 수정을 해야되는... 그런 마음 아픈일을...(저는 아직 회사에서 경험 못했습니다... 학생이라... 푸하하.....

#008_시(c)시(c)해서 C++?!_이름은 같은데 하는짓은 다 달라... 다형성

안녕하세요 삽잡이입니다. 오늘은 다형성에 대해서 배워보도록 하겠습니다...겉으로는 보이는 건 하나지만, 구체적으로는 모두 다를 수 있다...이게 바로 다형성입니다... 파생을 통해서 얻을 수 있는 이점중 하나는 바로기반 클래스 형식의 포인터 변수로 파생된 개체를 관리할 수 있다는 것입니다...말이 좀 어렵죠?이말인 즉, 기반 클래스에 직접적으로나 간접적으로나 상속 되는 클래스는 모두 관리할 수 있다 이겁니다...더 어렵나요? 허허... 이전 시간에 예시를 들었던....피아니스트, 드러머, 기타리스트 등 음악가와 관련된 개체들을음악가 형식의 포인터 변수로 관리 할 수 있다 이거죠... 좀더 생각해본다면, 음악가 형식의 변수 즉, 기반 클래스 형식의 포인터 변수 하나로 여러개의 파생 클래스 형식의 객체들을 ..

#007_시(c)시(c)해서 C++?!_상속을 가지고 놀아보자~

안녕하세요 삽잡이입니다. 지난 시간에는 클래스간의 관계에 대하여 알아봤었습니다.오늘은 그중에서 일반화 관계 즉, 상속과 다형성에 대해서 알아보려고 합니다. 일반화...란 뭐라고 했었나요? 'is a' 관계라고 했죠...예를 들어볼까요?'삽잡이는 사람이다.' '삽잡이는 남자다.' 등등... 삽잡이는 사람에 기반하고 있으며, 삽잡이는 남자에 기반하고 있습니다.또한, 남자는 사람에 기반하고 있죠...흠... 모두 사람에 기반하고 있네요... 그렇다는 뜻은, 사람이라는 기반 클래스를 통해서 남자, 삽잡이와 같은 파생 클래스를 통해 파생을 표현할 수 있다 이겁니다... 어렵게 설명했나요? 그러면 실제 코드를 보시며 이해를 해보도록 하겠습니다. 1234567891011class Musician{ string nam..

#006_시(c)시(c)해서 C++?!_클래스간의 관계

안녕하세요 삽잡이입니다~! 이번 시간에는 클래스간의 관계에 대해서 알아보고자 합니다! 클래스간의 관계에 대해서 UML을 사용할 것이구요... 음... 우선 UML 모델링 툴에는 대표적으로... Rose, Together, Visual, Visual Paradigm 등등 있습니다. 그리고 제가 오늘 사용할 StarUML 또한 있고요.... 자... 이들을 모두 Case 도구라고 부릅니다. Case 도구는 Computer Aided Software Engineering의 약자를 가지고 있고요 소프트웨어 개발과정을 자동화하기 위해서 사용하는 소프트웨어 도구라고 합니다... 웩.. 뭔말이야... 쉽게, 프로그램 개발 방법론에 의해 진행되는 프로세스에서 이 툴들이 사용된다는 것인데요 ... 자.. 우리가 제품을 ..

#005_시(c)시(c)해서 C++?!... 조금은 불편한 생성자...

자... 한번 생성자부터 소멸자까지 한번 쓸어담아봅시다!물론 예제를 통해서 말입니다 하하... 우선, header입니다. 1234567891011121314151617181920212223242526#pragma once#include using namespace std;class Stu{ int num; string name; int hp;public: // 기본 생성자 //Stu(); // 생성자 Stu(int num); Stu(int num, string name); // 복사 생성자 Stu(const Stu &stu); // 기본 소멸자 //~Stu(); void Study(); int GetHp(); int GetNum();};cs 헤더는 어떤 역할을 담당하느냐...이런 형식들이 있다... 이런..