분류 전체보기(603)
-
인터페이스 설계방법. 제대로는 쉽게, 엉터리론 어렵게(effective c++ 18)
인터페이스 설계란클래스의 접근 권한을 이야기 하는 것이 아닌, 사용자와 제품간의 접점을 말한다. 여기서는 클래스나 함수, 템플릿의 사용 환경 등이 속한다. 좋은 설계제대로 쓰기는 쉽게, 잘못 쓰기는 어렵게 설계하는 것이 바람직하다. 일관성을 지키는 설계인터페이스를 만들 때 기존에 제공되던 공통인터페이스를 일관성 있게 따르는 것이 바람직하다. 이는 사용자 측에서 뭔가를 외우지 않고 기존에 하던 대로 편하게 사용 할 수 있으므로 접근성이 높다. (STL, .NET등도 최대한 이와 같이 하려고 노력하였다.) 실수를 방지하는 설계만일 사용자가 인터페이스를 잘못 사용하고 있다면 알기 쉽게 컴파일 에러가 나도록 만든다. 방법1. 새로운 타입을 들여와 인터페이스를 강화한다.2. const의 활용 주의점새로운 타입을 ..
2015.08.20 -
new로 생성한 객체를 스마트포인터에 저장하는 코드는 별도의 한 문장(effective c++ 17)
정리new로 생성한 객체를 스마트 포인터로 넣는 코드는 별도의 한 문장으로 만들자. 이것이 안 되어 있으면, 예외가 발생될 때 디버깅 하기 힘든 자원 누출이 초래될 수 있다. 예제해당 코드의 경우 컴파일이 된다. 문제점함수의 매개변수로 넘겨지는 인자를 평가(evalutate): priority() 호출 ->“new Widget” 표현식 실행 -> shared_ptr 생성자 호출 연산이 호출되는 순서는 컴파일러 제작사마다 다르다.※ 자바 및 C#은 매개변수의 평가 순서가 특정하게 고정되어있다. priority()가 두 번째로 호출 되고 예외가 발생했다면???new Widget은 누수!!! 해결따로!
2015.08.20 -
new/delete 형태 맞추기(effective c++ 16)
정리- new 표현식에 []를 썻으면, 대응되는 delete 표현식에도 []를 써야한다.- new 표현식에 []를 안 썼다면, 대응되는 delete 표현식에도 []를 쓰지말아야 한다.
2015.08.20 -
자원관리 클래스의 자원은 접근 가능하게(effective c++ 15)
형변환을 통한 외부 접근타입 불일치- 실수 없이 자원을 관리하기 위해서는 스마트 포인터를 활용하는 방법이 소개되었다.- 그러나 API 함수를 비롯한 표준 함수들은 원시 포인터(native pointer)를 원한다. 원시 포인터, 스마트 포인터- 원시 포인터int* pa;- 스마트 포인터std::tr1::shared_ptr ps; 형변환 필요성- 스마트 포인터는 해당 타입을 감싸고 있는 하나의 객체로 원시 포인터와는 엄연히 다른 타입이다.- 원시 포인터를 필요로 하는 함수가 있을 경우 이를 형변환해주어야 컴파일 에러를 피할 수 있다. 스마트 포인터get 함수- 해당 타입의 원시 포인터 사본을 반환하는 멤버 함수이다.- auto_ptr과 shared_ptr 모두 사용 가능하다.- 반환값 : 해당 타입의 원시..
2015.08.20 -
[C++/STL] STL 벡터와 배열 차이
벡터(STL) 정의 동적 배열 구조로 C++에서 구현한 것. C++ STL 중의 하나의 템플릿 클래스. C의 배열처럼 빠른 랜덤 접근이 가능하지만 자동으로 배열의 크기 조절과 객체의 추가 삭제가 가능하다. 요소에 접근, 앞뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알아낼 수 있다. 배열과 차이점 C++의 배열은 메모리에 연속적. 배열의 모든 요소는 같은 타입을 가진다. 벡터는 at()함수를 사용해 존재하지 않는 요소에 접근하면 에러를 발생. 템플릿 클래스기때문에 원하는 모든 타입의 일반적인 배열(generic array)을 만들 수 있다. 벡터는 데이터를 선형적으로 유지한다. 저장공간보다 많은 데이터를 추가하면 현재 보유하고 있는 메모리의 두 배만큼 이를 할당하기 때문에 단순한 할당으로 선형적인 공간..
2015.08.19 -
Index(mysql)
정의색인, 조회할 때 원하는 행을 빠르게 찾을 수 있게 준비해둔 데이터를 말한다. 사용해야 하는 경우데이터 양이 많고 검색이 변경보다 빈번한 경우인덱스를 걸고자 하는 필드의 값이 다양한 값을 가지는 경우 종류primary : 중복되지 않은 유일 키- where문을 이용하여 데이터를 조회할 때 가장 고속으로 데이터를 가져온다.- 테이블마다 딱 하나의 primary key를 가질 수 있다. unique : 중복을 허용하지 않는 유일한 키- 고속으로 데이터를 가져올 수 있다.- 여러개의 unique key를 지정할 수 있다. normal : 중복을 허용하는 인덱스- primary, unique보다 속도가 느리다.- 여러개의 키를 지정할 수 있다. full text : 검색 엔진과 유사한 방법으로 자연 언어를 ..
2015.08.18