C++

    초기화

    auto auto의 장점 : 변수 초기화 누락을 방지하고 장황한 변수 선언을 피하는 것 중괄호 초기화 의도와는 달리 함수를 선언하게 된 경험이 있다면 바로 이 부작용에 당한 것이다. 문제의 근원은 이렇다. 다음은 흔히 인수를 지정해서 생성자를 호출 하는 코드의 예이다. Widget w1(10); // 인수 10으로 Widget의 생성자를 호출 그런데 이와 거의 비슷한 구문을 이용해서 인수 없이 Widget 의 생성자 class Widget { public: Widget(); // 기본 생성자 Widget(std::initializer_list il); // std::initializer // _list 생성자 … // 암묵적 변환 }; // 함수 없음 Widget w1; // 기본 생성자를 호출 Widg..

    [C++] 형식 연역 규칙

    템플릿 형식 연역 규칙 template void f(ParamType param); f(expression); - 컴파일러는 expression변수를 이용하여 두 가지 형식을 연역한다. T에 대한 형식, ParamType에 대한 형식이다. 두 형식이 다를 때가 있다. ParamType이 포인터 또는 참조 형식이지만 보편 참조는 아닐 때 template void f(T& param); int x = 3;//x는 int const int cx = x;//cx는 const int const int& rx = x;//rx는 const int인 x에 대한 참조 f(x);//T는 int, param의 형식은 int&가 된다. f(cx);//T는 const int, param의 형식은 const int& f(rx);..

    함수 오버로딩

    함수오버로딩 매개변수의 내용이 다르고 이름이 같은 함수들을 만들 수 있게 해주는 기능 //가능 void hi(int x, int y) { ... } void hi(double x, double y) { ... } 1. 매개변수의 내용이 다른 같은 이름의 여러 함수를 만든다. //가능하지 않음 void hi(int x, int y) { ... } void hi(double x, double y) { ... }//void double hi(double x, double y) { ... }//double 2. 매개변수의 내용이 같고 반환타입이 다른 여러함수는 안 된다. //모호함 void hi(float x) { ... } void hi(unsigned int x) { ... } hi(2.142332);//모..

    vector와 list의 차이점

    vector 연속적인 메모리. 미래에 들어갈 요소를 위해 선할당을 한다 각 요소는 요소 타입 그자체만큼의 공간을 요구한다 (포인터들을 포함하지 않는다). 당신이 요소를 추가하는 어느 때나, 전체 vector의 메모리를 재할당 할 수 있다. 끝에 요소를 추가하는 것은 상수(상환 시간)지만, 다른곳에서 추가하는 것은 O(n) 값이 든다. 끝에 요소를 제거하는 것은 상수 시간이지만, 다른곳에서 제거하는 것은 O(n)이다. 랜덤하게 vector 요소에 접근 할 수 있다. vector에 혹은 vector로 부터 요소를 추가하거나 제거하면, iterator는 무효화된다. 당신이 요소의 배열을 필요로 한다면, 근본적인 배열에서 쉽게 얻을 수 있다. 장점 1. 개별 원소들 접근 가능 2. 원소를 마지막에 삽입 하는 것..

    [C++] new와 malloc의 차이

    malloc int* p; p = (int*)malloc(sizeof(int) * 2); p[0] = int(0); p[1] = int(1); cout

    [C++] 가변인자 템플릿

    template void show(T value) { cout

반응형