언어

    [C++] 동적 메모리 할당

    🤔 동적 메모리 할당 이번 포스팅에서는 동적 메모리 할당에 대해 알아보도록 하겠습니다. 중간고사를 대비하여 정리한 내용이기 때문에 내용이 매우 부실할 수 있습니다. 기회가 된다면 C++언어에 대해 제대로 알아보는 시간을 갖도록 하겠습니다. 해당 포스팅은 장진수 교수님의 객체지향설계 과목을 수강하며 작성한 내용임을 알립니다. 🔎 동적 메모리를 사용하는 이유 지역변수는 자신의 지역 내에서만 유효한데, 전역변수처럼 프로그램이 끝날 때까지 값을 유지하고 싶은 경우 사용합니다. 프로그램 작성시(컴파일시)는 필요한 메모리 공간의 크기를 모르겠고, 프로그램을 실행할 때(runtime) 메모리의 양을 결정해야 하는 경우 사용합니다. ( 사용자 입력에 필요한 메모리 공간을 확보하는 경우) 지금까지는 프로그램을 실행하기 ..

    [C++] 레퍼런스(Reference)

    🤔 레퍼런스 C++의 가장 큰 특징이라고도 할 수 있는 레퍼런스에 대해 배워보겠습니다. 중간고사를 대비하여 정리한 내용이기 때문에 내용이 매우 부실할 수 있습니다. 기회가 된다면 C++언어에 대해 제대로 알아보는 시간을 갖도록 하겠습니다. 해당 포스팅은 장진수 교수님의 객체지향설계 과목을 수강하며 작성한 내용임을 알립니다. 🔎 선언과 초기화 아래의 코드에서 change_val()함수에 레퍼런스를 사용한 것을 알 수 있습니다. 인자인 number을 파라미터로 가지고 오는 것이기 때문에 아래와 같이 이해할 수 있습니다. int &p = number; 레퍼런스는 해당 변수의 별명이라고 생각하면 좋습니다. 🔎 lvalue and rvalue lvalue는 대체적으로 대입연산자의 좌측에 존재하는 값으로 주소에 메..

    [C++] C++언어에서 지원하는 C언어의 문법

    🤔 C++ 언어에서 지원하는 C언어의 문법 이번 포스팅에서는 C++언어에서 지원하는 C언어의 문법에 대해 배워보겠습니다. 중간고사를 대비하여 정리한 내용이기 때문에 내용이 매우 부실할 수 있습니다. 기회가 된다면 C++언어에 대해 제대로 알아보는 시간을 갖도록 하겠습니다. 해당 포스팅은 장진수 교수님의 객체지향설계 과목을 수강하며 작성한 내용임을 알립니다. 상대적으로 쉬운 for문, while문, if-else문, switch문은 생략하도록 하겠습니다. 🔎 포인터(Pointer) 지난 학기 저를 가장 애먹였던 포인터입니다. 포인터는 객체의 주소를 저장하는 데이터 타입입니다. 아래와 같이 사용할 수 있습니다. 포인터는 아래와 같이 update 될 수 있습니다. ✍️ 배열과 포인터 다음은 배열과 포인터입니다..

    [C++] Namespace

    🤔Namespace, using 이번 포스팅에서는 Namespace와 using 키워드의 사용 방법에 대해 알아보겠습니다. 중간고사를 대비하여 정리한 내용이기 때문에 내용이 매우 부실할 수 있습니다. 기회가 된다면 C++언어에 대해 제대로 알아보는 시간을 갖도록 하겠습니다. 해당 포스팅은 장진수 교수님의 객체지향설계 과목을 수강하며 작성한 내용임을 알립니다. 🔎 Namespace namespace는 함수나 구조체 혹은 변수 이름 등의 소속을 정해주는 것입니다. 같은 namespace에 존재하는 식별자들은 하나에 표시됩니다. 다른 namespace에 존재하는 각 식별자에 대해 정규화된 이름이 필요합니다. Namespace는 global한 범위에서 정의되거나 다른 Namespace의 내부에 정의되어야만 한다..

    [C++] 생성자/소멸자

    🤔 생성자/소멸자 이번 포스팅에서는 C++에서의 생성자/소멸자의 사용 방법을 배워보도록 하겠습니다. 중간고사를 대비하여 정리한 내용이기 때문에 내용이 매우 부실할 수 있습니다. 기회가 된다면 C++언어에 대해 제대로 알아보는 시간을 갖도록 하겠습니다. 해당 포스팅은 장진수 교수님의 객체지향설계 과목을 수강하며 작성한 내용임을 알립니다. 🔎 생성자(Constructors) 생성자는 자동으로 객체 생성시에 값을 초기화해주는 멤버함수입니다. 생성자는 클래스와 같은 이름을 가지고 있습니다. 또한 return 타입을 가지고 있지 않습니다. 오버로딩이 가능하며 직접 호출이 불가능합니다. ✍️ 디폴트 생성자 인자를 가지지 않는 생성자입니다. 사용자가 생성자를 선언하지 않았다면 public 멤버를 자동적으로 제공합니다..