분류 전체보기 (308) 썸네일형 리스트형 [C++] 생성자에서 포함된 객체 초기화 class Position { public: int x,y; Position(int ax, int ay) { x=ax; y=ay; } }; class Some { Position Pos; }; 만약 Some의 Pos를 Some의 생성자에서 초기화하려면 어떻게 해야할까? Some(int x, int y) { Pos(x,y); } 위 코드는 오류이다. 객체의 생성자는 객체가 생성될 때 자동으로 호출되는 것으로 Pos의 생성자를 임의로 호출할 수 없다. Some(int x, int y) { Position Pos(x,y); } 위 코드도 성립하지 않는다. 위 코드의 pos는 Some클래스가 가지고 있는 Pos가 아닌 Some 생성자 내의 지역 객체이기 때문이다. Some(int x, int y) : Pos(x.. [C++] 메모리 누수 체크 #define _CRTDBG_MAP_ALLOC #include #ifdef _DEBUG // 메모리 누수 위치 알려줌 #define new new ( _NORMAL_BLOCK , __FILE__ , __LINE__ ) #endif int main() { _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);// 메모리 누수 체크 int* pi = new int; *pi = 123; //delete pi; return 0; } 위와 같이 new로 메모리를 할당하고 해제하지 않을 경우 메모리 누수가 발생한다. crtdbg.h를 이용하면 메모리 누수를 체크 할 수 있다. 디버그를 실행하면 디버그 출력 창에 메모리 누수를 감지했다고 출력하고 new를 디버그.. [C++] 후위연산자 it = begin++; it = begin; ++begin; begin++는 후위연산자로 begin 값을 반환하고 begin에 1을 더한다. *out++ *(out++) 증가 연산자는 *와 우선순위가 같은데, 둘은 right-associative이므로 증가 연산자가 먼저 적용된다. [C++] vector vs list vector는 무작위 요소에 빠르게 접근하는 것에 최적화되어 있고 list는 컨테이너에 요소를 빠르게 삭제하고 삽입하는 것에 최적화되어 있다. 데이터의 삽입과 삭제가 끝에서만 이루어진다면, 요소의 순서가 바뀌지 않기 때문에 vector가 list보다 더 빠르다. 하지만 삽입과 삭제가 중간에서 이루어진다면 list가 빠르다. 그리고 데이터 입력이 커질수록 list가 vector보다 빠르다. vector는 index를 지원하는데 비해 list는 그렇지 않다. // version 4: use list instead of vector list extract_fails(list& students) { list fail; list::iterator iter = students.begin(); while (iter .. [C++] iterator cout name 기존 for문 for (vector::size_type i = 0; i != students.size(); ++i) cout [C++] 헤더파일 헤더파일에서는 라이브러리를 사용할 때 using을 피하는 것이 좋다. using std; double median(vector); 보다 double median(std::vector); 를 사용하는 것이 좋다. #ifndef GUARD_median_h #define GUARD_median_h // median.h—final version #include double median(std::vector); #endif #ifndef_GUARD_HeaderName_h로 헤더중복을 방지할 수 있다. [C++] Call by Value ,Call by Address, Call by Reference Call by value double median(vector vec) 매개변수인 vec의 값을 복사해서 가져온다. 함수 안에서 vec을 변경해도 실제 vec은 변하지 않는다. Call by reference vector homework; vector& hw = homework; // hw is a synonym for homework double grade(double midterm, double final, const vector& hw) const vector& hw는 homework의 또 다른 이름이 된다. 그래서 hw에 하는 행동들은 homework에게 동일하게 적용된다. 그 반대도 마찬가지다. const 키워드는 매개변수를 수정할 의도가 없을 경우 붙이고 수정할 의도가 있을 경우 뺀다. +23.. [C++] typedef typedef 키워드를 앞에 붙이는 것은 동의어를 만드는 것과 같다. typedef vector::size_type vec_sz; vec_sz size = homework.size(); vec_sz 에 typedef 키워드를 붙였더니 vector::size_type 처럼 사용할 수 있게 되었다. 이전 1 ··· 35 36 37 38 39 다음