C, C++/Modern C++
[C++ 11] noexcept
msdn : c++ 11의 noexcept는 함수가 예외를 throw 할 수 있는지 여부를 지정한다. Effective Modern C++ : 함수 선언 시 그 함수가 예외를 방출하지 않을 것임을 명시할 때는 noexcept 키워드를 사용하면 된다. 함수를 noexcept로 선언할 것인지의 여부는 인터페이스 설계상의 문제이다. 함수의 예외 방출 행동은 클라이언트에게 아주 중요한 사항이다. 함수의 호출자는 함수의 noexcept 여부를 조회할 수 있으며, 그 조회 결과는 호출 코드의 예외 안정성이나 효율성에 영향을 미친다. 그러므로 함수의 noexcept 여부는 멤버 함수의 const 여부만큼이나 중요한 정보다. noexcept 함수는 비 noexcept 함수보다 최적화의 여지가 크다. noexcept는 ..
[C++ 11] 중괄호 초기화, 초기화 리스트(Initialize List)
1. 4가지 초기화 방법 int main() { int value1 = 5; // C int value2(5); // C++ int value3{ 5 };// C++ 11 유니폼 초기화(균일한 초기화) int value4{}; // C++ 11 default인 0으로 초기화됨 } 2. 중괄호 초기화 시 주의할 점 중괄호 초기화는 축소변환(narrowing conversion)을 지원하지 않는다. int main() { // 중괄호 초기화는 축소변환(narrowing conversion)을 지원하지 않는다. // 즉 자동으로 변환되는 것을 막을 수 있다. // 컴파일 에러난다. int v1{ 5.1 }; double d{ 0.5f }; int i{ d }; // 마찬가지로 컴파일 에러, 데이터가 잘리는 것..
[C++ 11] 복사 생략(Copy Elision)
[C++ 11] 복사 생략(Copy Elision) 컴파일러가 복사 또는 이동 연산자를 회피 할 수 있으면 회피하는 것을 허용하는 방식 Return Value Optimization / Named Return Value Optimization (예시) struct Foo { Foo() { std::cout Release로 빌드하는 이유) Foo nrvo_foo = NRVO_F(); } Named Return Value Optimization (NRVO) NRVO는 RVO에 속하는 종류로써 예전에는 이러한 NRVO_F 라는 함수 내부에 foo라는 이름을 가진 객체는 return 시켜도 최적화 시키지 않았다. 그러나 사람들이 이름을 가지더라도 최적화 시키자고 하였고 이를 NRVO(Named Return Va..
[C++] 스마트 포인터 참고할만한 글
스마트 포인터에 대해 공부하면서 참고했던 글이다. 스마트 포인터 개념에 대해 궁금한 경우 : http://www.tcpschool.com/cpp/cpp_template_smartPointer 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 좀 더 심화적인 개념을 알고싶은 경우 : https://object-world.tistory.com/8 1. std::unique_ptr C++ 메모리 관리 C++에서 생 포인터(raw pointer)를 관리하기는 쉽지 않다. 자바는 가비지 콜렉터가 이를 수행하지만 C++같은 경우 사용자가 직접 메모리를 관리해야 한다. 잘못된 메모리 관리는 메모 object-world.tistory..