본문 바로가기

언어 정리/C++_개념_lib16

정적변수, 전역변수 정적변수 - 메모리값이 유지되나( 전역변수처럼 ), 지역변수로서 해당 블록에서만 사용이 가능 void doSomething() { static int a = 1; ++a; cout 2024. 1. 16.
this, function return 자료형 this : 자기 자신(객체)의 주소를 담는 포인터다. 멤버 변수 접근 방법 - this->멤버 로 접근 - (*this).멤버 로 접근 (this->) == (*this). 따라서 *this : 자기 자신(객체). 일반 리턴 : Calc add(int value){ return *this; } - Calc타입의 임시 변수에 자기 자신(Calc 타입 객체)이 복사된 후 그 임시 변수를 리턴한다. - 자신의 객체를 리턴하는 것이 아닌 자기 자신을 복사한 다른 Calc 타입의 객체를 리턴 - R-value 속성 참조 리턴 : Calc & add(int value){ return *this; } - 임시 변수에 복사하는 것 없이 자기 자신 자체를 리턴 - L-value 속성 2024. 1. 16.
char , 배열과 포인터 차이 char str[] = "Hello"; - 배열 스택에, 할당된 문자열 데이터는 힙에 const char *str = "Hello"; - 포인터는 스택에, 문자열 상수는 정적 메모리에 char *str = new char[6]; - 포인터는 스택에, 할당된 문자열 데이터는 힙에 ps> str_instance 2024. 1. 4.
스마트 포인터, casting 스마트 포인터 C++은 타 언어와 다르게 가비지 컬렉터가 없기 때문에 동적으로 할당한 메모리에 대해서는 메모리 누수가 발생하기 쉽습니다. 따라서, 동적으로 할당된 메모리를 관리를 위해 C++14부터 스마트 포인터가 생기게 되었습니다. 스마트 포인터에 동적으로 할당된 메모리 경우 특정 기준에 의해 사용이 완료되었다고 판단이 될 때 메모리를 해제해줍니다 스마트 포인터 설명 비고 unique_ptr 한 객체, 하나의 함수에서 만 사용할 때 사용. shared_ptr 특정 포인터의 복사본을 여러 객체나 코드에서 가지고 있을 때(공동 소유권), 이 포인터는 메모리에 대한 참조되는 숫자가 0이 될때 메모리를 해제. 공유될때 마다 레퍼런싱 카운팅을 수행. weak_ptr 지정된 메모리에 대한 소유권을 가지지 않는 포.. 2024. 1. 3.
typedef alias 개념 typedef typename std::string string; 이거나 typedef std::string string; 이거나 둘다 현재 상황에서는 동일함. typedef std::string string; 2024. 1. 3.
#if, 초기화리스트, const, namespace #if는 사전 처리기(preprocessor) 지시문입니다. 이는 컴파일 과정에서 소스 코드가 실제로 컴파일되기 전에 처리 일반 if 문은 실행 시간(runtime) 조건문입니다. 프로그램이 실행될 때 평가되고, 조건이 참이면 if 블록 내의 코드가 실행 차이가 있다. --- #if 쓰는 이유 : 동작과정은 동일하나, 컴파일에 포함시키지 않아 프로그램의 크기를 줄일 수 있고 불필요한 조건 검사를 하지 않는다. ex) 디버깅용도 하단의 코드는 if 조건에 해당하지 않더라도, 해당 코드는 컴파일되어 프로그램이 생성된다. bool debugMode = false; int main() { if (debugMode) { // 이 코드는 debugMode가 true일 때만 실행됩니다. // 하지만 debugMode.. 2024. 1. 2.