반응형 C++8 C++ - 동적 메모리 할당 C언어에서 동적 메모리 할당은 malloc()과 free()를 이용했습니다. 하지만 C++은 새롭게 new연산자와 delete연산자를 사용합니다. 동적 메모리 할당은 메모리의 비효율적인 사용을 관리하고자 사용합니다. 살짝 좀 더 알아보면 메모리는 몇 개의 영역으로 나눌 수 있습니다. '동적 메모리 할당'은 메모리의 힙(heap)영역에 할당됩니다. 보통 우리가 컴파일 전에 할당하는 '정적 메모리 할당'은 대부분 스택(stack)영역을 사용합니다. 스택 영역도 당연하게도 크기를 초과하면 오버플로우가 발생합니다. 그래서 동적 메모리 할당에 대해서 알아보겠습니다. 먼저 동적 메모리 할당에는 new연산자를 사용합니다. 사용법도 malloc()에 비해서 굉장히 간단합니다. int *num = new int; 포인터.. 공부 자료실/C++ 2020. 8. 25. C++ - 클래스(class) 상속 클래스는 '상속'이라는 굉장히 중요한 특징을 가지고 있습니다. 상속이 중요한 이유는 작성한 클래스를 다시 활용함으로 굉장히 많은 코드를 줄여줄 수 있습니다. 예를 들어 학생이라는 클래스와 회사원이라는 클래스를 작성했습니다. 학생과 회사원은 사람이라는 공통점이 있습니다. 그러면 사람의 정보를 상속받고 각각 학생의 추가 정보와 회사원의 추가 정보다 더해준다면 쉽게 클래스를 작성할 수 있게 됩니다. 여기서 사람에 해당하는 클래스를 부모 클래스(parent class) 또는 베이스 클래스(base class)라고 하며 사람을 상속받은 학생과 회사원같은 클래스를 자식 클래스(child class), 파생클래스(derived class)라고 합니다. 이제 예제를 통해서 클래스를 상속해보겠습니다. 부모 클래스의 정의.. 공부 자료실/C++ 2020. 8. 21. C++ - 클래스(class) 생성자와 소멸자 이번에는 클래스의 생성자와 소멸자에 대해 알아보겠습니다. 생성자는 객체가 선언될 때 자동으로 호출이 되는 특수한 멤버 함수입니다. 보통 생성자를 이용해서 객체가 선언될 때 객체를 초기화를 할 수 있습니다. 클래스 이름과 동일한 함수명을 가지고 있습니다. 생성자는 특수한 함수답게 반환값이 없습니다. 반환값이 없다 보니 자료형을 붙이지 않고 정의합니다. 예제를 통해서 알아보겠습니다. #include using namespace std; class Student { public: Student() //생성자 { cout 공부 자료실/C++ 2020. 8. 19. C++ - string 클래스 지금까지는 문자열을 char형의 배열로 선언했습니다. 하지만 C++부터는 string클래스를 이용해서 문자열을 저장해보겠습니다. char배열과 가장 크게 달라진 점은 더 이상 배열의 크기를 신경 쓰지 않아도 된다는 점입니다. 먼저 string클래스를 사용하기위해서는 다음과 같은 새로운 헤더 파일을 추가해야 합니다. #include string클래스에 문자열을 초기화하는 방법은 다음과 같습니다. #include #include using namespace std; int main() { string str = "Hello World"; cout 공부 자료실/C++ 2020. 8. 18. C++ - 클래스(Class)의 구조와 접근 지정자 클래스는 C++ 객체 지향 프로그램의 가장 중요한 요소입니다. C언어에서 사용한 구조체의 확장된 개념이라고 생각하면 됩니다. 구조체에서는 struct키워드를 사용하지만 클래스는 class키워드를 이용해서 타입을 정의하며 변수와 함수의 집합입니다. 클래스 내부에 정의된 변수나 함수를 멤버 변수, 멤버 함수(또는 메서드)라고 합니다. class 클래스이름 { 멤버변수 멤버함수 . . . . . }; 클래스를 사용하기 위해선 구조체처럼 해당 클래스의 변수를 선언해야 합니다. 클래스이름 변수명; 예제로 살펴보겠습니다. #include class Student { }; int main() { Student stn; return 0; } class student를 정의하고 main에서 student의 변수 stn을.. 공부 자료실/C++ 2020. 8. 17. C++ - 네임스페이스(namespace) C++의 입출력 cin과 cout을 하면서 std에 대해서 살짝 알아봤었습니다. std(standard의 약어)는 네임스페이스(namespace)이며 네임스페이스란 C++로 넘어오면서 굉장히 방대한 양의 라이브러리와 식별자들이 나오게 되고 중복이 되는 상황이 발생하게 되면 구분을 할 수 없는 경우가 생깁니다. 이를 해결하기 위해서 나온 개념입니다. 네임스페이스를 사용해서 중복되는 식별자들을 관리할 수 있습니다. namespace 이번에는 네임스페이스에 대해서 알아보겠습니다. 네임스페이스는 직접 선언도 가능합니다. namespace키워드를 이용해서 직접 네임스페이스를 선언할 수 있습니다. 예제로 네임스페이스를 이용해서 같은 이름의 함수를 사용해보겠습니다. #include namespace Aspace{ v.. 공부 자료실/C++ 2020. 8. 13. C++ - 입출력 소스파일을 만들었으니 가장 먼저 "Hello World"를 입력과 출력을 해보겠습니다. C언어에서 stdio.h의 scanf()(또는 scanf_s())와 printf()를 사용했습니다. 그냥 사용해도 에러는 발생하지 않습니다. #include #define ARRAY_SIZE 20 int main() { char str[ARRAY_SIZE]; scanf_s("%[^\n]", &str, ARRAY_SIZE); printf("%s \n", str); return 0; } 하지만 새롭게 C++을 배우기 때문에 C++ 표준 라이브러리를 사용하겠습니다. C++에서 새롭게 등장하는 iostream(Input/Output Stream)은 표준 라이브러리 중 하나입니다. #include 이 표준 라이브러리를 포함해서.. 공부 자료실/C++ 2020. 8. 12. C++ - 프로젝트 생성 C++은 C언어를 기반으로 만들어진 언어입니다. 이름만 봐도 C에 ++를 붙여 한 단계 증가했다는 의미죠. 덴마크에 '비야네 스트롭스트룹'이 만들었으며 1983년에 C++이란 이름으로 불리기 시작했습니다. *초기 1979년에는 C++이 아닌 'C with Classes'였습니다. C언어는 보통 '절차 지향 언어'라고 표현합니다. C++은 절차 지향의 특성도 가지면서 '객체 지향', '일반화 프로그래밍'도 지원합니다. C언어의 확장 개념이다 보니 C언어에서 사용한 많은 부분을 C++에서도 사용 가능합니다. 하지만 C++을 진행하면 할수록 C언어와 다른점이 크게 나타나는 언어입니다. 그러다 보니 C언어를 하지 않고 C++을 배워도 크게 상관없을 정도입니다. C++은 현재에도 굉장히 다양한 부분에서 사용하고 .. 공부 자료실/C++ 2020. 8. 11. 이전 1 다음 반응형