리팩토링 리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다. 리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다. 외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다. [ 리팩토링 시리즈 ] [C++] 누구나 쉽게, 리팩토링(클린코드)-① 순수가상함수/추상클래스 [C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스 [C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅 [C++] 누구나 쉽게, 리팩토링(클린코드)-④ 상속 (개념과 특징) 이번시간에는 리팩토링을 진행하면서 Null 객체를 도입에 대해 살펴..
함수 하나의 작은 목적을 수행하기 위해 여러 문장을 모아 놓은 것 // 함수 헤더 returnValueType functionName(list of parameters) { // 함수 몸체 : 할 일 정의 } // 함수 호출 : 함수 사용 functionName(actual parameter); * 함수 헤더 : 함수의 반환값 유형(returnValueType), 함수 이름(functionName), 매개변수로 구성 ** 매개변수 : 함수 헤더에 작성된 변수. 함수가 호출될 때 값이 전달되어 저장되는 변수 ** 실매개변수(인수) : 호출하는 쪽의 매개변수 함수의 특징 5 int max(int num1, int num2) 6 { 7 int result; 8 9 if(num1 > num2) 10 result..
이론으로만 배우던 정렬 알고리즘을 직접 프로그래밍하며 익혀보는 시간입니다. 이름하야 열정넘치는 정열아닌 정렬 프로젝트!! Bubble버블, Selection선택, Insertion삽입, Merge머지, Heap힙, Quick퀵소트를 다뤄보도록 하겠습니다. [C++]정렬 알고리즘 프로그래밍-①코딩 준비하기 이전 시간에 코딩할 준비를 마쳤습니다. 이번 시간에는 본격적인 프로그래밍에 앞서 정렬 알고리즘들을 하나의 프로젝트로 만들기 위해 부가적으로 필요한 메소드들을 만들보겠습니다. 정렬할 준비! 정렬 알고리즘들을 구현하여 하나의 프로젝트로 만들기 위해 본격적인 프로그래밍에 앞서 부가적으로 필요한 메소드들을 만들보겠습니다. 어떤 메소드들이 있는지 sort_class.h 헤더파일을 통해 살펴보겠습니다. * 솔루션 ..
이론으로만 배우던 정렬 알고리즘을 직접 프로그래밍하며 익혀보는 시간입니다. 이름하야 열정넘치는 정열아닌 정렬 프로젝트!! Bubble버블, Selection선택, Insertion삽입, Merge머지, Heap힙, Quick퀵소트를 다뤄보도록 하겠습니다. 본격적인 프로그래밍에 앞서 코딩할 준비부터 해보도록 하겠습니다. 코딩할 준비! 프로그래밍은 Visual Studio 2008을 이용하여 C++로 진행합니다. 1. 비주얼스튜디오를 열어서 메뉴의 파일 > 새로만들기 > 프로젝트를 선택 2. 빈 프로젝트로 생성 3. 아래와 같이 작성할 헤더파일과 Cpp파일을 추가합니다. 4. 코딩후 디버깅 혹은 실행을 하려면 다음과 같이 저장을 하고, 빌드 메뉴에서 솔루션 빌드로 진행합니다. 다음 포스팅에서는 본격적인 프로..
이번에는 캐스팅에 대해서 공부합니다. 3. 캐스팅퀴즈퀴즈! char* pa = malloc(sizeof(char)); // c(o), c++(x)char* pb = (char*)malloc(sizeof(char)); // c(o), c++(o)위의 두 문장은 C, C++ 환경에서 문제없이 잘 돌아갈까요? (정답은 질문 옆을 아주 잘~ 보면 보입니다.) C언어에서는 명시적으로 형 변환을 하지 않아도 컴파일러는 알아서 잘 짰거니 하고, 개발자를 믿고 실행합니다.논리적으로 잘못됐어도 에러를 내지 않으니 개발자는 월화수목금금금... 이와 달리, C++에서는 타입 체크가 강화되어 타입을 명시하지 않으면 컴파일 에러가 납니다.♥ 따라서 C++에서는 타입을 정확히 명시해주어야 합니다. 그러나 (char*) 이런 식으..
포인터 ▶ 함수로부터 배열 반환 ♡ 다음 중 옳은 구문은? int[] reverse(const int list[],int size) (X) void reverse(cons tint list[], int newList[], int size) (O) 함수에서 배열을 반환할 수는 없어요!>>> 포인터 : 컴퓨터 메모리 직접 조작 가능 포인터 변수(포인터) : 데이터 값의 메모리 번지를 가짐⇔ 일반적인 변수 : 데이터 값(정수, 실수, 문자)를 가지고 있음 dataType *pVarName; 포인터 변수를 선언할 때 : 변수 앞에 *(애스터리스크) 포인터에 변수의 번지 대입 : 변수 앞에 &(앰퍼샌드-주소 연산자) => 변수의 번지 int *pCount;int count = 5;pCount = &count; >..
☞ 함수 : 하나의 작은 목적을 수행하기 위해 여러 문장을 모아 놓은 것 returnValueType functionName(list of parameters) // 함수 헤더 { // 함수 몸체 } functionName(actual parameter); //함수 호출 - 함수 헤더 + 몸체 : 할 일 정의 - 함수 호출 : 함수 사용 ☞ 함수 헤더 : 함수의 반환값 유형(returnValueType), 함수 이름(functionName), 매개변수 ☞ 매개변수 : 함수 헤더에 작성된 변수. 함수가 호출될 때 값이 전달되어 저장되는 변수 ☞ 실매개변수(인수) : 호출하는 쪽의 매개변수 5. int max(int num1, int num2) 6. { 7. int result; 8. if(num1 > nu..
C++ 헤쳐나가기 시리즈 [c++] c++ 입문① - 친밀도 높이기(사람 관점에서 컴퓨터 언어 바라보기) [c++] c++ 입문② - 첫 프로그래밍, 희열을 느껴보자 [c++] c++ 입문③ - 변수를 정복하자! 변수 지정된 데이터 유형의 정보를 보관하는 기억 장소 특징 - 데이터나 계산 결과를 저장하는데 사용 - 변수의 유형을 지정 - 사용되기 전에 선언되어야함 변수이름 규약 - 변수 이름 길이는 제한 없으며, 대소문자를 구별 - 변수 이름은 _,영문자(A~Z, a~z), 숫자(0~9)를 사용하여 작성되고 이름의 시작은 문자나 _를 사용함 - 단순히 x, y 같은 이름을 사용하기보다 의미 있는 단어를 이름으로 사용할 것 예) radius, area, commission, interestRate, int..
Hello World 살펴보기 간단한 프로그래밍을 짜보자. #include int main() { std::cout