[Effective C++] 6. 컴파일러가 만들어낸 함수가 필요없으면 확실히 이들의 사용을 금해버리자
C++/Effective C++2022. 11. 10. 19:38[Effective C++] 6. 컴파일러가 만들어낸 함수가 필요없으면 확실히 이들의 사용을 금해버리자

Effective C++ 3rd Edition. Scott Meyers. C++ 프로그래머의 필독서라고 불리는 Effective C++을 읽고 중요한 내용을 정리한 글 입니다. Item6. 컴파일러가 만들어낸 함수가 필요없으면 확실히 이들의 사용을 금해버리자 어떤 클래스에서 특정한 종류의 기능을 지원하지 않았으면 하는 의도를 반영하는 방법은 그런 기능을 제공하는 함수를 선언하지 않는 것이다. 하지만, 복사 생성자나 복사 대입 연산자에 대해서는 해당되지 않는 방법이다. 선언하지 않아도 컴파일러가 자동으로 생성하기 때문이다. 따라서 이에 대한 해결책으로 복사 생성자와 복사 대입연산자를 private 멤버로 선언함으로써 외부의 사용을 막을 수 있다. 하지만 이 방법의 문제점은 그 클레스의 멤버 함수나 frie..

[Effective C++] 5. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자
C++/Effective C++2022. 11. 10. 18:13[Effective C++] 5. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자

Effective C++ 3rd Edition. Scott Meyers. C++ 프로그래머의 필독서라고 불리는 Effective C++을 읽고 중요한 내용을 정리한 글 입니다. Item5. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자. 🔻생성자, 소멸자, 대입 연산자 모든 c++ 클래스에 한 개 이상 꼭 들어 있는 것이 생성자, 소멸자, 대입 연산자이다. ◽ 생성자 : 새로운 객체를 메모리에 만드는 데 필요한 과정을 제어하고 초기화를 맡는 함수. ◽ 소멸자 : 객체를 없앰과 동시에 그 객체가 메모리에서 적절히 사라질 수 있도록 하는 과정을 제어하는 함수. ◽ 대입 연산자 : 기존의 객체에 다른 객체의 값을 줄 때 사용하는 함수. 이들을 어떻게 하면 멋지게 모아둘 수 있을까? 🔻컴파일러가..

[Effective C++] 4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자
C++/Effective C++2022. 11. 9. 23:49[Effective C++] 4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자

Effective C++ 3rd Edition. Scott Meyers. C++ 프로그래머의 필독서라고 불리는 Effective C++을 읽고 중요한 내용을 정리한 글 입니다. Item4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자. 초기화되지 않은 값을 읽도록 내버려 두면 해당 객체에 쓰레기 값이 들어가 있게되어 프로그램이 내가 의도한대로 흘러가지 않을 가능성이 매우 크다. 따라서 초기화가 중요하다. int x; class Point { int x, y; }; Point p; 이런식으로 객체의 값을 명시적으로 초기화 해주지 않았다면, 어떤 상황에서는 초기화가 보장되지만, 또 어떤 경우에서는 안된다. 이것만 보면 C++의 객체 초기화가 중구난방인 것처럼 보이겠지만, 그런 것은 절대 아니다. 언제 ..

[Effective C++] 3. 낌새만 보이면 const를 들이대 보자!
C++/Effective C++2022. 11. 9. 01:22[Effective C++] 3. 낌새만 보이면 const를 들이대 보자!

Effective C++ 3rd Edition. Scott Meyers. C++ 프로그래머의 필독서라고 불리는 Effective C++을 읽고 중요한 내용을 정리한 글 입니다. Item3. 낌새만 보이면 const를 들이대 보자! 🔻const const에 대해 생각해 볼 때 가장 멋지다고 말할 수 있는 부분이 있다면, '의미적인 제약'을 소스 코드 수준에서 붙인다는 점과 컴파일러가 이 제약을 단단히 지켜준다는 점이다. 어떤 값이 불변이어야 한다는 제작자의 의도를 컴파일러와 다른 프로그래머와 나눌 수 있는 아름다운 수단이다. const는 팔방미인! const의 사용처 전역 혹은 네임스페이스 유효범위의 상수를 선언(정의)하는데 사용(항목 2) 파일, 함수, 블록 유효범위에서 static으로 선언한 객체에도 ..

[Effective C++] 2. #define을 쓰려거든 const, enum, inline을 떠올리자.
C++/Effective C++2022. 11. 8. 20:34[Effective C++] 2. #define을 쓰려거든 const, enum, inline을 떠올리자.

Effective C++ 3rd Edition. Scott Meyers. C++ 프로그래머의 필독서라고 불리는 Effective C++을 읽고 중요한 내용을 정리한 글 입니다. Item2. #define을 쓰려거든 const, enum, inline을 떠올리자. 🔻#define보다는 const, enum item이름을 다른 말로 해보면 "가급적 전처리기보다는 컴파일러를 더 가까이 하자"라고 할 수 있다. #define ASPECT_RATIO 1.653 위와 같은 코드를 썻을 때, 우리는 ASPECT_RATIO가 Symbolic name으로 보이지만, 소스코드가 컴파일러에게 넘어가기 이전에 전처리기가 해당 글자를 숫자 상수로 바꾸어버리기 때문에 컴파일러의 입장에서는 전혀 보이지 않는다. 그렇기때문에 해당 ..

[Effective C++] 1. C++을 언어들의 연합체로 바라보자.
C++/Effective C++2022. 11. 8. 18:25[Effective C++] 1. C++을 언어들의 연합체로 바라보자.

Effective C++ 3rd Edition. Scott Meyers. C++ 프로그래머의 필독서라고 불리는 Effective C++을 읽고 중요한 내용을 정리한 글 입니다. Item1. C++을 언어들의 연합체로 바라보자. 🔻 C++을 바라보는 관점을 바꾸자 오늘날의 C++은 다중패러다임 프로그래밍 언어라고 불린다. 절차적 프로그래밍을 기본으로하여, 객체 지향, 함수식, 일반화 프로그래밍을 포함하며 메타프로그래밍 개념까지 지원하고 있다. 이렇게 복잡하게 여러가지의 개념이 얽혀있는 C++을 이해하기위한 가장 쉬우면서 정확한 방법은 C++을 단일 언어로 바라보는 눈을 넓혀, 상관관계가 있는 여러 언어들의 연합체로 바라보고 각각의 하위 언어에 관한 규칙을 각개격파 하는 것이다. C++의 하위언어는 네 가지..

image