cpp6 [C++] 객체지향 프로그래밍 객체변수들과 참고 자료들로 이루어진 소프트웨어 덩어리인스턴스 변수(instance variable) 와 인스턴스 메소드(instance method) 객체에 정의되어 있는 함수, 변수들이 외부로 부터 ’보호’ 되고 있기 때문 외부에서 직접 인스턴스 변수의 값을 바꿀 수 없고 항상 인스턴스 메소드를 통해서 간접적으로 조절하는 것=> 캡슐화(Encapsulation) "객체가 내부적으 로 어떻게 작동하는지 몰라도 사용할 줄 알게 된다"현실 세계에서의 존재하는 것들을 나타내기 위해서는 추상화(abstraction) 클래스- 객체를 담는 틀(설계도) C++에서 클래스를 이용해서 만들어진 객체를 인스턴스(instance)라고 한다. class Person{private: int age; char .. 2025. 1. 1. 연속된 자료구조 vs 연결된 자료구조 연속된 자료구조- 모든 원소를 단일 메모리 청크(chunck)에 저장- 큰 사각형이 단일 메모리 청크를 나타내고, 안쪽 작은 사각형은 원소가 저장된 메모리 공간을 의미- 각각의 원소는 같은 타입(type)이고, 데이터 접근 시 주소를 이용해서 접근하고 O(1)이 걸린다.- ex) 배열정적 배열 vs 동적 배열정적 배열은 스택(stack) 영역에 할당되어 함수가 종료되면 자동으로 해제된다.동적 배열은 힙(heap) 영역에 할당되어 사용자가 직접 해제하기 전까지 유지된다.int arr[size];int* arr = (int*)malloc(size*sizeof(int));int* arr = new int[size];* 배열과 같은 연속된 자료 구조는 원소끼리 인접되어 있어 접근 시 원소 몇 개도 같이 캐시(c.. 2024. 10. 26. [C++] STL container C++의 STL(Standard Template Library)에서 제공하는 컨테이너들은 데이터를 효율적으로 저장하고 관리할 수 있도록 도와줍니다. vector, list, deque는 모두 시퀀스 컨테이너로, 저장된 데이터의 순서를 유지하며 각기 다른 상황에서 효율성을 제공합니다. 1. vector (동적 배열)특징: 크기를 자동으로 조절하는 동적 배열입니다. 요소를 뒤에서 삽입하거나 삭제하는 작업은 빠르지만, 중간에 삽입하거나 삭제하는 작업은 느림사용 예: 배열처럼 사용하되 크기가 변경될 수 있는 경우에 적합 #include #include int main() { std::vector v = {1, 2, 3}; // 초기화 v.push_back(4); // 끝에 4 추가 v.pus.. 2024. 10. 19. [C++] 템플릿 프로그래밍(template programming) 템플릿 프로그래밍(template programming)= 제너릭 프로그래밍(generic programming) C: 절차지향 언어(Procedural language)JAVA : 객체지향언어(Object-Oriented language) C++은 표준으로 템플릿을 라이브러리 형태로 제공한다. (STL) 근데 템플릿은 잘못 작성하면 미친듯한 오류를 생성해낸다. 그럼에도 쓰는 이유는- 타입 독립성(코드의 재사용성)- 코드 중복 감소- 컴파일 타임에 오류 발견 템플릿(Template)- 함수의 작성을 용이하게 하고, 재사용 가능하게끔 하여 SW 생산성과 유연성을 증가시킨다.-- 자료형이 변할 때마다 함수(클래스)를 새로 작성할 이유가 없다. - c에서 #define으로 정의되는 매크로와 유사하지만, 타입.. 2024. 10. 18. [C++] C++ 소개 C++ 특징 절차적 프로그래밍(Procedural programming)- 적절한 데이터 구조 설계의 초점이 맞춰짐- C와 다르게 다른 언어에서도 C++를 통해 이 절차적 프로그래밍을 지원해줌데이터 추상화(Data abstraction)- 클래스를 통해 구체적이고, 추상적인 데이터들을 관리- 클래스 내부에 데이터와 그 데이터를 처리하는 함수(메서드)를 포함시켜 데이터의 구조와 동작을 캡슐화.- 인터페이스를 통해 사용자는 내부 구현 세부 사항에 의존하지 않고 클래스의 기능을 활용 가능객체 지향 프로그래밍(Object-oriented programming)- 클래스, 상속, 다형성, 캡슐화와 같은 OOP 개념을 통해 유지보수성과 재사용성을 높임.- 설계 단계에서 객체 간의 관계를 정의하고, 코드에서 이러한 .. 2024. 9. 22. [C++] Setting in visual studio code https://code.visualstudio.com/docs/cpp/config-mingw Get Started with C++ and MinGW-w64 in Visual Studio CodeConfiguring the C++ extension in Visual Studio Code to target g++ and gdb on a MinGW-w64 installationcode.visualstudio.com 윈도우 환경에서 진행하였고, WSL을 쓰는게 아닌 쌩 window os 위에서 진행하였다. MinGW 설치 및 환경 변수 설정 GCC 컴파일러 확인 C에서의 배포 과정- Compile : 소스코드( .c 파일)를 컴파일러를 통해 기계어로 번역하여 개별적인 목적파일 (.o .. 2024. 8. 22. 이전 1 다음