C++ LValue RValue 개념파악하기
2023. 6. 6. 21:31
DevLog/C & C++
기본개념 C++11 이전까지 LValue와 RValue는 이름과 마찬가지로 코드에서의 연산 중 왼쪽에 올 수 있는 값과 오른쪽에 존재하는 값으로 구분되어 있었습니다. 이 분류는 현재에서도 통용되는 부분이나 C++11 이후 약간의 좀 더 추가 설명이 필요하게 되었습니다. int main() { // Left Right Result는 모두 LValue로써 식별자(identifier)를 가지고 // 다른 데이터를 복사해서 자신의 상태를 변경 할 수 있다. // 3 7 0은 모두 RValue이다. int left = 3; int right = 7; int result = 0; // RValue는 여러곳에서 볼 수 있는데, RValue는 // 다른 데이터의 메모리를 복사할 공간이 없거나 // 식별자(identif..

JNI : Java Native Interface
2022. 11. 6. 19:52
DevLog/JAVA
JNI ? Java Native Interface의 약자로 Java 코드가 다른 언어(일반적으로는 C 또는 C++)로 작성된 코드와 상호 작용할 수 있도록 하는 API입니다. 왜 사용하나요? 이미 Java로 소프트웨어 코어단을 작성했고, 이 이후 코드들은 Java 코드로 재작성하기를 원치 않고, Java로 작성된 코어 코드만 재사용하고 싶을때 JNI를 많이 사용합니다. 우리가 시스템 디바이스에 접근할 필요가 있거나 혹은 Java의 성능을 넘어선 플랫폼 특징적인 작업을 수행할 경우에 JNI를 사용할 수 있습니다. (사실 많은 Java 라이브러리 루틴들이 결과적으로 내부(private) 네이티브 메소드를 이러한 목적으로 호출하고 있다. 예를 들면, I/O, Threading, Networking 패키지들 전..

C++ 포인터 개념
2021. 2. 4. 15:43
DevLog/C & C++
주소값의 이해 데이터의 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미합니다. C++에서는 이러한 주소값을 1바이트 크기의 메모리 공간으로 나누어 이해할 수 있습니다. 예를 들어, int형 데이터는 4바이트의 크기를 가지지만, int형 데이터의 주소값은 시작 주소 1바이트만을 가리키게 됩니다. 포인터란? C++에서 포인터(pointer)란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 부릅니다. char형 변수가 문자를 저장하고, int형 변수가 정수를 저장하는 것처럼 포인터는 주소값을 저장하는 데 사용됩니다. int n = 100; // 정수형 변수의 선언 int *ptr = &n; // 정수형 변수의 포인터 선언 다음 그림은 위의 예제에서 사용된 변수와 포인터가 메모리에서 어떻게 ..

C++ 구조체(Struct)
2021. 1. 25. 12:32
DevLog/C & C++
구조체(Struct) 객체를 표현하기 위해 하나 이상의 변수가 필요한 프로그래밍 사례가 많이 있다. 예를 들어, 자신의 표현하기 위해 이름, 생일, 키 , 몸무게 또는 자신에 대한 기타 특성을 저장할 수 있다. std::string myName; int myBirthYear; int myBirthMonth; int myBirthDay; int myHeightInches; int myWeightPounds; 위에는 어떻게든 그룹화하지 않은 6개의 독립 변수가 있다. 자신에 대한 정보를 함수에 전달하려면 각 변수를 개별적으로 전달해야 합니다. 또한, 다른 사람에 대한 정보를 저장하려면 추가된 사람마다 6개의 변수를 추가로 선언해야 합니다. 다행히도 C++에서는 고유한 사용자 정의 집계 데이터 유형(user-..
C++ STL 맵 기본 사용법과 예제
2021. 1. 24. 20:32
DevLog/C & C++
Map 기본 형태 map : 키와 값을 쌍 형태로 선언합니다. 반복자 (iteractor) begin() : 시작 반복자를 반환 end() : end iterator를 반환 추가 및 삭제 insert(make_pair(key, value)) : 맵에 원소를 pair 형태로 추가 erase(key) : 맵에서 key (키값)에 해당하는 원소 삭제 clear() : 맵의 원소 전부 삭제 조회 find(key) : key (키값)에 해당하는 iterator를 반환합니다. count(key) : key (키값)에 해당하는 원소 (value들)의 개수를 반환합니다. 기타 empty() : 맵이 비어 있으면 true 아니면 false를 반환 size() : 맵 원소들의 수를 반환 #include #include #..

C++ 오버로딩과 오버라이딩
2021. 1. 24. 20:22
DevLog/C & C++
오버로딩(Overloading) : 함수 중복 정의 오버로딩은 같은 이름의 함수에 매개변수를 다르게 사용하여 매개 변수에 따라 다른 함수가 실행되는 것. 오버라이딩(Overriding) : 함수 재정의 오버라이딩은 상속받았을때 부모클래스의 함수를 사용하지 않고 다른 기능을 실행할때 함수를 자식클래스에 같은 이름, 매개변수로 재정의 해서 사용하는것. 오버로딩 : 심화 설명 메소드 이름이 같아야 한다. 리턴형이 같아도 되고 달라도 된다. 파라미터 개수가 달라야한다. 파라미터 개수가 같을 경우, 자료형이 달라야 한다. 객체 지향 프로그래밍에서 오버로딩(Overloading)은 같은 이름의 메소드를 여러개 중복 선언하는 것을 말합니다. C와 같은 기존언어에서는 같은 이름의 함수를 만들 수 없었습니다. 이것이 직..