삽질의 현장/- C++ 34

[삽잡이::C++] vector 삽질 일지

안녕하세요 삽잡이 입니다. 이번 시간에는 간략하게 시행 착오들을 겪으며 삽질을 한....지금 생각해보면 내가 이런 허접한 실수를 했단 말인가... 하는 오류들을 정리해보려고 합니다. 물론... 가장 큰 목적은 나의 삽질을 기억하고 다시는 이런 실수를 하지 않기 위해서입니다. 1. vector안에 NULL 이 들어 있다면? 말 그대로 입니다. 간단하게(?) 도서 관리 프로그램을 구현하고 있었습니다. 매우 간단하게 말입니다...미리 vector의 사이즈를 100으로 resize 해놓고 모두 0으로 초기화를 했습니다. 왜냐, 원하는 인덱스 값에 데이터를 집어 넣으려고 한 이유죠...기존 vector를 사용할 때 push_back 이나 insert 같은 경우에는 데이터를 입력함으로써 vector의 사이즈가 유동..

#032_시(c)시(c)해서 C++?!_ Lambda 그리고 함수 객체를 사용하는 이유.

안녕하세요~! 삽잡이 입니다. 예전에 이런말을 들은 적이 있습니다.' 아는 만큼 보일 것이다...' 지금 생각했을때, 예전에 프로그래밍 언어에 대해서 질문을 했던 내용들을 떠올려보면참으로 부끄럽고도 우스운 내용들이 다반사였습니다. 지금 보면 별것 아닌 지식들이... 그 예전에는 왜 그런지에 대해 이해조차 가지 않았었는데...아는 만금 보인다라... 아직 패기 넘치는 혈기 왕성한 삽잡이는 알아가는 재미가 쏠쏠합니다. 더욱 폭 넓은 지식을 습득하기 위해, 더욱 폭 넓은 견문을 가지기 위해오늘도 삽잡이는 열심히 삽질을 하겠습니다~! 자... 이번 시간에는 함수 객체를 사용하는 이유에 대해서 알아보겠습니다.함수 객체에 대해서 왜 사용해야하는지 이게 뭔가하는 궁금증을 가지고 있었습니다... 하지만 그 궁금증은 시..

#031_시(c)시(c)해서 C++?!_ 함수 객체가 뭘까요?

안녕하세요 삽잡이 입니다. 하하... 어제의 글로 분명 C++에 대한 정리를 끝냈다고 생각했지만막상 함수 객체에 대해 접할 기회가 있었는데 가물가물 가물치 한 것입니다...죄송합니다. 지금 자고 일어나서 제정신이 아닙니다... 자... 잠도 깰꼄... 오늘도 힘차게 달려보겠습니다~! 함수 객체에 대해 알아보기 이전에는 연산자 중복 정의를 알아야합니다...지난 시간에 연산자 중복정의에 대한 간략한 정리를 진행 했었죠...그래서 함수 객체를 헷갈려하는 사단이... 발생...아무튼... 그러면 이번에는 우선 연산자 중복 정의에 대한핵심만을 간략하게 정리하고 본론인 함수 객체로 들어가보도록 하겠습니다. 연산자 중복정의는 '피연산자 중에 최소 하나 이상이 사용자 정의 형식일 경우에 해당 연산에 대한 기능을 정의 ..

#030_시(c)시(c)해서 C++?!_C++의 모든 것! 최종 정리 (2)

안녕하세요 삽잡이입니다...지난시간에 이어서 C++ 에 대한 총 정리를 진행해보려고 합니다...물론 '백문이 불여일타' 라는 말이 있듯이(?) 하하...열심히 코드를 쳐보며 접근해야하는 것이 맞으나, 가끔은 머리도 순환할겸... 개념도 정리할겸... 이렇게 정리를 통해 복습하는 것 또한 나쁘지 않다고 생각합니다... 이전 시간에도 언급했듯이,이 글은 이미 C++에 대한 경험이 있으시며, 다시한번 머리로 정리해볼 필요가 있으신 분들이 읽으시기에 보다 적합한 글이 될 것 같습니다. 물론 제가 글을 워낙 막쓰다보니... 이해가 안가시는 부분들이 많을 수 있겠지만....사전적 지식을 가지고 계신 분들이라면,무리없이 이해하시고 넘어가실 것이라는 믿음이 생기는 군요... 말이 길어졌군요... C++ 마지막(?) 총..

#029_시(c)시(c)해서 C++?!_C++의 모든 것! 최종 정리 (1)

안녕하세요 삽잡이 입니다... 이번 시간에는 그동안 알아오던 (저혼자...) C++에 대해서 정리할 시간을 가져보려고 합니다...물론... 실습 위주가 아닌 용어위주로 말이죠... 하하...사전에 C++에 대해 살펴보신 경험이 있는데, 가볍게 한번 훑고 지나가고 싶다 하시는 분들이읽으시기에 적당한 글이 될 것 같습니다.조금은 긴 글이 될 수 있겠군요... 바로 시작하겠습니다. C++은 C언어에 그 외 기능들이 +(plus) 된 언어입니다.해당 언어는 C언어에 비해 보다 신뢰성이 있는 언어로써, 객체 중심으로 프로그래밍을 할 수 있는 객체 지향 언어(OOP) 중 하나입니다. 물론, C++ 이후에 나온 Java, C#에 비하면 신뢰성이 보다 떨어질 수 있으나, C언어와 비교했을 때 보다 신뢰성을 추구하며,개..

#028_시(c)시(c)해서 C++?!_프로그램 설계 예시

안녕하세요 삽잡이입니다~! 오늘은 UML을 사용한 프로그램 설계의 예시에 대해 소개해드리려고 합니다.머릿속으로 설계를 하고 종이에 구현 방안에 대해서 설계하기에는어느정도 프로그램의 크기가 커지면 한계가 있다는 것을 몸소 느꼈습니다... 처음 분석하고 설계하는 시간이 많이 잡아먹고...또한, tool을 사용하는 시간까지 생각하면... 더 많이 잡아 먹습니다...만들면서도 내가 지금 뭘 하고 있는건가 하는 생각이 드는데요... 하지만, 분명한건 만들어두면 개발할 때에 정말 유용하다는거! 수업때 배운 예시를 보여드리도록 하겠습니다~! [ 요구 분석 (Use Case Diagram) ] - 전체 - 학교 [ 설계 ]- 클래스 다이어그램 [ 마을 형성 (시퀸스 다이어그램) ]- 생성시 - 종료시 - 학생 생성 시..

[삽잡이::C++] main() 함수에 관하여...

안녕하세요 삽잡이입니다... 여유로운 주말이 찾아왔습니다 푸하하...오늘은 엉뚱한 이유를 찾아 헤매보려고 합니다...별거 아닐 수 있습니다... 근데 이놈의 삽질 자체인... 삽잡이는 그냥 궁금해졌습니다..별거 아니면 그냥 살포시 넘어가시길.... 허허... 아무튼...Visaul Studio를 실행시키고 소스파일을 만들었을 때 문득 생각이 들었습니다... 123456#include main(){ }cs c에서 아무 생각 없이 쓰던 이 'main()' ... 왜 안되... 왜 안되?c++에서는 안되기에 왜그러지 했습니다... 물론 이유는 찾았죠.... c++에서는 기본 int를 지원하지 않는다라... 참고로 c/c++ 표준 main 시그니처는 아래와 같습니다... 12int main(void);int m..

#027_시(c)시(c)해서 C++?!_dynamic_cast

안녕하세요... 삽잡이 입니다...비가 센치하게 내리군요... 오늘 이 축축한 거리에 나가야하다니...빗소리의 나의 몸을 기대어... 물 흐르듯이 흘러 나가리... 푸하하하;;; 아무튼... 오늘은 dynamic_cast에 대해서 알아보도록 하겠습니다... OOP 즉 객체지향 프로그램의 특징 중 하나인다형성에 의해서 기반클래스에다가 파생된 객체를 받을 수 있습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 #include #include using namespace std; class Job{ int salary; string name;public: Job(int _salary, string _n..

#026_시(c)시(c)해서 C++?!_객체의 생성과 소멸의 책임

안녕하세요 삽잡이입니다~! 이번 시간에는 지금껏 제가 공부해오며 간과하던객체와 소멸에 대한 책임에 대해 알아보도록 하겠습니다... C#이나 java와 같이 비교적 나온지 얼마 되지 않은 언어들 같은 경우에는알아서 메모리를 관리해주게 됩니다..따라서 생성과 소멸에 대해 큰 신경을 쓰지 않아도 됩니다. 하지만, C나 C++ 같이 훨씬 이전에 나온 언어들 같은 경우에는그 당시 컴파일러를 만드는 기술이 지금보다 안좋았겠죠... 아무튼... 생각을 안한지는 모르겠지만,객체의 생성이 되며 소멸될때까지 관리되는 heap 메모리 영역에서의메모리 관리만큼은 개발자에 책임이 있습니다.내가 응가 쌌으면 내가 치워야져.... 앗... 나의 메모리들이 똥이라는 건 아닙니다... 푸하하하아... 드럽게시리... C에서는 mall..

#025_시(c)시(c)해서 C++?!_멤버 이니셜라이저

안녕하세요 삽잡이입니다... 이번 시간에는 기초로 다시 돌아가서 이니셜라이즈에 대해서 썰을 풀어보고자 합니다... 이니셜라이즈... 언제 쓸까요? 두가지로 나뉩니다...상수와 생성자에 관련되서 이니셜라이즈를 사용하게 되죠...예시를 들어보겠습니다.. 123456789101112131415161718 #include #include using namespace std; class Member{ int num; string name;}; void main(){ Member *sap = new Member();} cs 이와 같이 기본적인 Member class는 생성자가 없으면 기본적으로 default 생성자가 자동으로 생성되어 문제없이 컴파일이 가능합니다... 하지만, 1234567891011121314 c..