추상화(abstraction)의 첫번째 좋은 예는 C++에 더 강력한 배열을 첨가하는 것이다. C와 같이 C++도 배열을 위한 최소한의 지원만 한다. 예를 들어, 배열은 어떤 고정된 크기를 가지지만 C나 C++에서 기본적으로 제공하는 내장(built-in) 배열은 그 크기를 저정하거나.....
개요 저번장까지 이건 이렇고 저건 저렇다 라고 설명한 한 항목이였다. 이번 장은, 실질적으로 코드를 작성하는데 도움이 될 만한 몇가지 문법 들을 설명한다. 5.1 typename 5.2 this 5.3 멤버 템플릿 5.4 템플릿 템플릿 파라미터 5.5 0 초기화 5.6 함수 템플릿에.....
자주 쓰지는 않지만 기존 작성된 템플릿 클래스를 Wrapping 하다보면 (특히 리스트!)템플릿 클래스를 사용해야 하는 경우가 많습니다. 하지만 이것 저것 작성하다 보면 템플릿 클래스의 헤더가 복잡해지는 경우가 많은데요. 이는 템플릿 클래스(Template Class)의 멤.....
저번 항목에 이어서, 이번 항목은 리팩토링이다. 때 마침 리팩토링 관련 서적을 읽고 있던 터라, 그 필요성을 알게 되었었터라 "무엇을 어떻게 리팩토링 할까?" 에 대해서 생각해 보게 된다. 1 ) std::string의 멤버 함수들 중 멤버가 아니면 안되는 것들은 무엇이 .....
c나 c++을 하다보면 은근히 접하게 되나 가끔 사용에 있어서 헷갈릴때가 있다. 그래서 const에 대해 이것저것 찾아보고, 배우던 도중 여러가지를 알게 되었다. [1] 먼저 C에서 쓰이는 C언어에 대해 언급하려한다. 가장 기본적인 const의 용법은 상수화 시키는 것이.....
이번 항목은 표준 라이브러리를 비판하기 위해서 있는 항목 같기도 하다. 비판의 방향은 "표준이 표준이 아닐 수 있는 것은 표준 라이브러리의 구현을 엄격히 정해 두지 않아서 이다" 로 잡고 이야기 하겠다. 이 이야기의 대표로 함수 std::mem_fun 를 들어 본.....
JavaScript는 클래스라는 개념을 제공하지 않기 때문에, 객체를 만들때 클래스의 이름을 줄 수가 없습니다. 따라서 객체를 만들때 클래스의 이름이 아니라, 함수의 이름을 주어야 합니다.1다음의 코드를 봅시다.function Foo(name) { this.name = name;}var obj = n.....
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필이번 항목은 "클래.....
항목 29. 내부 데이터에 대한 "핸들"을 리턴하는 것을 피해라우선 핸들이란?1. 자동차의 핸들같은것을 말하는 것이다. (모든 제어가 가능하니까)2. C++에선 포인터나 레퍼런스를 말한다.(모든 접근 제어가 가능하니까)이유1. 내부 데이터의 안정성을 보장하지 못.....
항목 27. 의도하지 않은 내부 생성 맴버 함수의 이용을 명시적으로 막는다.여기서 내부 생성 멤버 함수란?1. 생성자2. 소멸자3. operator=이유1. 메모리 릭발생 위험이 있다.(반대로 메모리 릭의 반대 경우가 생길수도 있다. 없는 메모리를 delete)2. 기본자료형.....
C언어에서 scanf를 이용하여 공백까지 포함된 문자열을 저장할수없다는건 누구나 다 아는사실이다. 화이트스페이스 즉, 개행,공백,탭을 끝으로 보는 함수인데 이것은 C++의 cin과 같다. C에서 개행문자를 제외한 입력을받는 함수로 gets()가 있듯이 C++에도 개행문자.....
const 함수에서 멤버변수의 값을 조작하려 하거나 const 멤버함수가 아닌 일반 멤버함수를 호출하려하면 에러가 발생한다. 아래의 코드가 그러한 경우이다. using std::endl; class AAA { private: int val; public: int GetVal() const{ //멤버함수의 c.....