4. 객체가 필요하게 되기 전까지는 생성하지 말 것 void Function(intarg) { Object obj; if(arg == 0) return; … } arg가 0 일때에도Object 객체 생성. 필요한 선언을 최대한 뒤로 미루자. 반복문일 경우는 루프 밖에 객체를 선언하자.
5. 초기화 목록을 사용할 것 Class Vehicle { public: Vehicle(const std::string &name) { m_Name = name; } private: std::string m_Name; } Vehicle 생성자호출전string m_Name에 대한 생성자 호출. m_Name = name 의 복사대입 연사자 호출. Vehicle 기본생성자도 메모리에 할당할 수 있다. Class Vehicle { public: Vehicle(const std::string &name) : m_Name(name) private: std::string m_Name; }
6. 후증가 보다는 전증가를 사용할 것 x++ 자기 자신의 복사본을 생성한 후 값을 넘긴다. ++x 자기 자신을 증가시킨 후 넘긴다. for 문같은반복문에서는전증가 사용이 좋다. Const int Value = *this; ++(*this); Return Value; *this += 1; Return *this;
7. 값을 반환하는 연산자를 피할 것 Vector operator+(const Vector &v1, const Vector &v2) V = v1 + v2; Vector의 임시객체를 생성하고 복사(값으로 반환) 하는 추가적인 부담을 야기시킨다. Void Vector::Add(const Vector &v1, const Vector &v2) V = v1.Add(v2); 첫번째 인자를 즉시 수정하여 사용하기 때문에 임시객체를 반환할 필요 가 없다.