[C++] 스마트 포인터
·
C++/Basic
auto_ptr#include auto_ptr ap(new double);*ap = 25.5;- memory헤더 파일을 소스코드에 포함해야한다.- 메모리가 해제될 때 ap를 해제하고 ap의 파괴자가 동적메모리를 해제한다.- new로 생성한 단일 객체에 대해서만 메모리의 해제를 보장한다.- 동일한 메모리 위치를 가리키는 객체를 2개 이상 생성하지 않아야 한다는 점입니다.- C++11이 지원되는 환경이라면 auto_ptr을 완전히 대체하는 unique_ptr을 사용하면 됩니다. auto_ptr ap(new double);auto_ptr ap2;*ap = 25.5;ap2 = ap;cout - 다음과 같을 때 ap는 ap2에 소유권을 넘기게된다. 더 안전하다고 할 수 있다. unique_ptrunique_ptr..
[C++] 가상함수에 대해
·
C++/Basic
가상함수에 대해서- 가상 함수는 기본 클래스에서 선언된 함수로, 파생클래스에서 이 함수를 재정의(override)할 수 있게 합니다. 어떨 때 쓰이는가?- 다형성을 구현하기 위해 사용되며, 포인터나 참조를 통해 기본 클래스 형식으로 호출된 함수가 실제 객체의 타입에 따라 적절한 파생 클래스의 함수를 호출할 수 있게 합니다. 가상 함수의 기본 구문- 가상 함수를 선언하려면 기본 클래스에서 함수 선언 앞에 'virtual' 키워드를 사용합니다.- 파생 클래스에서 동일한 함수 시그니처로 함수를 재정의하면, 이 함수는 가상 함수로 동작합니다.class Base {public: virtual void show() { std::cout  동작 원리가상 함수 테이블- 가상 함수는 가상함수 테이블을 ..
함수 오버로딩
·
C++/Basic
함수오버로딩 매개변수의 내용이 다르고 이름이 같은 함수들을 만들 수 있게 해주는 기능 //가능 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의 차이점
·
C++/Basic
vector 연속적인 메모리. 미래에 들어갈 요소를 위해 선할당을 한다 각 요소는 요소 타입 그자체만큼의 공간을 요구한다 (포인터들을 포함하지 않는다). 당신이 요소를 추가하는 어느 때나, 전체 vector의 메모리를 재할당 할 수 있다. 끝에 요소를 추가하는 것은 상수(상환 시간)지만, 다른곳에서 추가하는 것은 O(n) 값이 든다. 끝에 요소를 제거하는 것은 상수 시간이지만, 다른곳에서 제거하는 것은 O(n)이다. 랜덤하게 vector 요소에 접근 할 수 있다. vector에 혹은 vector로 부터 요소를 추가하거나 제거하면, iterator는 무효화된다. 당신이 요소의 배열을 필요로 한다면, 근본적인 배열에서 쉽게 얻을 수 있다. 장점 1. 개별 원소들 접근 가능 2. 원소를 마지막에 삽입 하는 것..
[C++] new와 malloc의 차이
·
C++/Basic
malloc int* p; p = (int*)malloc(sizeof(int) * 2); p[0] = int(0); p[1] = int(1); cout
[C++] 가변인자 템플릿
·
C++/Basic
template void show(T value) { cout