전체 글258 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. template 설명 [ fold_expression ] 1. 인자가 하나인 템플릿 2. 인자가 2개인 템플릿 3. fold_expression 사용한 템플릿 4. ?? 1. 인자가 하나인 템플릿 2. 인자가 2개인 템플릿 3. fold_expression [폴드표현식]사용한 템플릿 4. ?? 1. 인자가 하나인 템플릿 호출하는 쪽에서 인자의 자료형과 리턴자료형을 결정 #include #include using namespace std; template T sum(T a, T b){ return a + b; } int main(void) { int a=1, b =2; double d1 = 2.2; double d2 = 3.3; string s1 = "Show me "; string s2 = "The Money 6"; cout 2023. 12. 27. 가변인자 1. cstdarg lib - 인자의 갯수를 지정해야함 2. Template + initializer_list 라이브러리 - 인자 갯수 지정 X - 인자의 자료형이 동일해야함 3. Template + 재귀함수 + fold_expression - 인자 갯수 지정 X - 인자의 자료형이 동일할 필요 X - 마지막 인자를 처리해줘야 하는 번거로움 ( 오버라이딩 필요 ) 1. cstdarg lib #include #include void PrintNumbers(int count, ...) { va_list args; va_start(args, count); for (int i = 0; i < count; ++i) { int number = va_arg(args, int); std::cout 2023. 12. 27. Lvalue , Rvalue , 메모리 누수 C++11 이후와 이전으로 개념이 조금 바뀜 C++11 이후의 개념으로 설명합니다 정의 : lvalue (locator value): 메모리 상에 지속적인 주소를 가지고 있으며, 다른 변수에 할당되거나 &* 연산자를 통해 그 위치를 참조할 수 있다. [ 세 조건 다 맞아야 함 ] rvalue (read value): 저장되거나 참조될 수 없고 오직 읽혀질 수만 있는 표현식의 결과, 한번만 쓰이고 다시 불릴 수 없는 [ 좌측값이 아닌 값 ] 위와 같이 left right 가 아닌 메모리에 지속적인 주소가 있는가, 읽기 전용 인가의 차이다. - 따라서 &(L-val)는 가능하나, &(R-val)는 불가능함. ex) 상수 "3"은 rvalue 임. 왜냐면 "3"은 메모리 상에 지속적인 주소를 가지지만, 저장되.. 2023. 12. 27. 참조와 포인터 * 과 & 은 Lval Rval 일때 의미가 다르다 Lval Rval * 주소값자료형 주소가 가리키는 값을 리턴 [ 주소값자료형 변수만 가능 ] & 참조형자료형 (주소값을 참조형으로 래핑해서 저장한다) 변수 자체의 주소를 리턴 [ 변수 자체의 주소만 안됨 ] 공통점 주소값 Rval가 들어와야함 int bb = 1; std::cout 2023. 12. 26. 이전 1 ··· 5 6 7 8 9 10 11 ··· 43 다음