프로그램의 구조 컴퓨터 프로그램은 컴퓨터에 수행할 작업을 지시하는 일련의 명령이다. 프로그램은 일반적으로 세 가지 기본 요소로 구성된다. : 표현식(expression), 명령문(statement) 및 함수(function) 명령문(Statement) 프로그램에서 가장 일반적인 구조는 명령문(statement)이다. C++에서 명령문은 가장 작은 단위다. 생각을 전달하기 위해 사용하는 문장과 유사하다. C++에서는 컴파일러에게 작업을 수행하기 위해 명령문을 작성한다. C++에서 명령문을 일반적으로 세미콜론(;)으로 끝난다. C++에는 아래와 같은 여러 종류의 명령문(statement)이 있다. int x; x = 5; std::cout
개요 C++ 프로그래밍을 시작하면 레퍼런스(Reference : 참조자)라는 새로운 개념을 접하게 됩니다. 언뜻 보면 C언어를 공부할 때 여러분들을 굉장히 괴롭혔던 포인터(Pointer)와 유사해 보입니다. 어떠한 대상을 가리킨다는 점에서는 같습니다. 하지만 포인터와 레퍼런스는 여러가지 차이점이 있습니다. 그 중에서 C++ 프로그래밍을 할 때 반드시 알아야 할 두 가지 중요한 차이점에 대해서 이야기 해보겠습니다. 1. NULL 허용 여부 우선 NULL값을 허용하는 것에 대한 문제입니다. 포인터는 아시다시피 NULL을 허용하지만 레퍼런스는 NULL이 될 수 없습니다. 이 부분이 굉장히 중요한데요. 포인터를 다룰 때 수없이 우리를 마주쳤던, ‘Null pointer exception’ 또는 ‘Segmenta..
가상 함수(Virtual Function) C++에서 자식 클래스에서 재정의(오버라이딩)할 것으로 기대하는 멤버 함수를 의미함 멤버 함수 앞에 virtual 키워드를 사용하여 선언함 → 실행시간에 함수의 다형성을 구현할 때 사용 선언 규칙 클래스의 public 영역에 선언해야 한다. 가상 함수는 static일 수 없다. 실행시간 다형성을 얻기 위해, 기본 클래스의 포인터 또는 참조를 통해 접근해야 한다. 가상 함수는 반환형과 매개변수가 자식 클래스에서도 일치해야 한다. class parent { public : virtual void v_print() { cout
[Cpp] 얕은 복사 vs 깊은 복사 shallow copy와 deep copy가 어떻게 다른지 알아보자 얕은 복사(Shallow Copy) 한 객체의 모든 멤버 변수의 값을 다른 객체로 복사 깊은 복사(Deep Copy) 모든 멤버 변수의 값뿐만 아니라, 포인터 변수가 가리키는 모든 객체에 대해서도 복사 struct Test { char *ptr; }; void shallow_copy(Test &src, Test &dest) { dest.ptr = src.ptr; } void deep_copy(Test &src, Test &dest) { dest.ptr = (char*)malloc(strlen(src.ptr) + 1); strcpy(dest.ptr, src.ptr); } shallow_copy를 사용하..
STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library의 약자 입니다. STL은 사람마다 조금씩 다른 정의를 내립니다. C++권위자인 Scott Meyers는 STL을 "반복자를 가지고 동작하는 C++ 표준 라이브러리의 일부분"이라고 정의했습니다. STL은 우리가 C++프로그래밍에서 만들어야 하는 여러가지 자료구조 클래스와 알고리즘 등을 미리 만들어 놓은 라이브러리로 반복자라는 놈을 통해서 동작하는 라이브러리입니다. STL의 주요 구성요소 컨테이너(Container) : 객체들을 저장하는 개개체 혹은 클래스(vector, list, string, map) 반복자(iterator) : 컨테이너에 저장된 요소를 순회하고 접근하는 객체 혹은 클래스(추상화) 알고리즘(Algo..
- Total
- Today
- Yesterday