# effective_cpp

16개의 포스트

인라인 함수는 미주알고주알 따져서 이해해 두자

요약inline 함수의 특징 1\. 인라인 함수를 사용하려면 함수 선언 앞에 inline이라는 키워드를 사용한다.2\. 클래스 멤버 함수가 inline을 사용하려면, 함수 정의의 위치가 \*.h에 있어야 한다. 안그러면 확인할 수 없는 참조라고 뜸3\. 함수의

약 3시간 전
·
0개의 댓글

예외 안정성이 확보되는 그날 위해 싸우고 또 싸우자!

요약예외 안정성의 요구사항자원이 새도록 만들지 않는다.자료구조가 더렵혀지는 것을 허용하지 않는다.(함수에서 메모리상에 없는 함수를 호출한다던가, 정상적 작동범주를 넘어선 경우)예외 안정성은 이 보장성 중 하나 보장기본적인 보장예외 발생 시, 자원 누수를 시키지 않겠다.

4일 전
·
0개의 댓글

캐스팅은 왠만하면 사용하지 말자

C++ 스타일 캐스트 4가지const_cast (표현식) : 객체의 상수성을 없애는 용도.dynamic_cast (표현식) : 안전한 다운캐스팅.reinterpret_cast (표현식) : 포인터를 int로 바꾸는 등의 하부 수준 캐스팅.static_cast (표현식)

6일 전
·
0개의 댓글

예외를 던지지 않는 swap에 대한 지원도 생각해 보자

요약평소에 사용하는 swap함수는 우리가 흔하게 사용하는 형식이다.예시코드위와같은 swap() 함수를 사용하면 사본(temp)가 필요없는 경우도 있는데, 사본까지 복사하는 게 비효율적이라고 생각되면, pimpl(pointer to implementation)이란 기법을

2022년 6월 20일
·
0개의 댓글

멤버 함수보다는 비멤버 비프렌드 함수와 더 가까워지자

요약멤버함수보다는 편의함수를 잘 사용해보자. 편의함수는 클래스 내부에 접근할 필요가 없고,무조건 클래스의 멤버 함수만을 이용해야하기 때문이다.편의함수의 장점캡슐화보다 안전함. private 멤버 데이터 접근 함수가 줄어든다. 캡슐화된 클래스를 한번더 세부적으로 나누어사

2022년 6월 18일
·
0개의 댓글

데이터 멤버가 선언될 곳은 private 영역임을 명심하자

요약클래스 작성에 있어 캡슐화는 정말로 중요하다. 캡슐화가 안되어있다면 사용자에게 누드쇼를 한 것이나 다름없다.C++ 세상에선 public 이란 ' 캡슐화되지 않았다 ' 라는 뜻이다.멤버 데이터들은 거의 private 안에 써주는 것이 중요하다. 멤버함수를 통해 멤버

2022년 6월 17일
·
0개의 댓글

값에 의한 전달보단 상수객체 참조자에 의한 전달 방식을 택하는 편이 대개 낫다.

간단 요약 값에 의한 호출은 생성자와 소멸자가 중복되어 실행된다. 그런 불필요한 생성자,소멸자 호출을 방지하는 방법은 상수객체 참조자에 의한 전달 방법이다!복사 효율을 높이자!복사 손실 문제에 노출되지 않도록 해야한다!값에 의한 전달함수로부터 객체를 전달 받거나, 함수

2022년 6월 13일
·
0개의 댓글

클래스 설계는 타입 설계와 똑같이 취급하자.

클래스를 설계할 때는 문법이 자연스럽고, 의미구조가 직관적이며, 효율적인 구현이 한 가지 이상 가능해야한다. 좋은 클래스를 만들기 위해 고민해야할 점들을 나열했다.새로 정의한 타입의 객체 생성 및 소멸은 어떻게 이루어져야 하는가?객체를 생성하게되면 객체의 소멸을 설계해

2022년 6월 10일
·
0개의 댓글

new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자

C++의 연산 실행 순서는 다른 컴파일러들에 비해 자유도가 높다.때문에 계획과는 다르게 연산이 진행될 수 있어 메모리 누수가 발생할 수 있다.(매개변수의 초기화가 언제 발생 되는지 알 수 없어서 RALL 객체에 먼저 넣어야함)해결책객체 생성 후, 스마트 포인터에 저장한

2022년 6월 7일
·
0개의 댓글

New 및 Delete를 사용할 때는 형태를 반드시 맞추자!

일단 메모리가 할당된다.할당된 메모리에 대한 1개 이상의 생성자가 호출된다.우선 기존 할당된 메모리에 대한 1개 이상의 소멸자가 호출된다.그 후 메모리가 해체된다.위 코드처럼 new 표현식에 맞춰 delete 표현식을 맞춰주자가 핵심 내용이다.new에 를 썼다면 여

2022년 6월 6일
·
0개의 댓글

EffectiveC++ 항목1~15 요약

C++은 4가지의 하위 언어를 제공한다.CC++의 문법적 구조는 C에서 거의 모든 것을 가져왔다.객체 지향 개념의 C++클래스, 캡슐화, 상속, 다형성, 가상 함수(동적 바인딩) 등 객체 지향 설계의 규칙을 이용한다.템플릿 C++TMP(Template metaprogr

2022년 6월 5일
·
0개의 댓글

[C++][Effective C++] 항목 49 : new 처리자의 동작 원리를 제대로 이해하자 (하)

5. 객체의 클래스 타입에 따른 new 처리자 구현 출력 6. 클래스 템플릿을 활용한 일반화된 new 처리자 클래스

2022년 5월 9일
·
0개의 댓글

[C++][Effective C++] 항목 49 : new 처리자의 동작 원리를 제대로 이해하자 (상)

try에서 동적 메모리에 할당하려는 배열의 SIZE가 너무 크기 때문에 예외를 던진다.catch에서 bad allocation 예외를 출력한다.

2022년 5월 9일
·
0개의 댓글

[C++][Effective C++] 항목 45 : "호환되는 모든 타입"을 받아들이는 데는 멤버 함수 템플릿이 직방!

사용자정의 스마트포인터로 포인터의 암시적 변환을 따라해보자스마트포인터의 암시적 변환 설계를 알아보자멤버 함수 템플릿을 사용해보자

2022년 5월 1일
·
0개의 댓글

[C++][Effective C++] 항목 21 : 함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자

[Effective C++] 항목 21: 함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자

2022년 3월 5일
·
0개의 댓글

[C++] 기본 생성자, 복사 생성자, 복사 대입 연산자

기본 생성자&복사 생성자&복사 대입 연산자

2022년 1월 18일
·
0개의 댓글