Java처럼 "new"를 사용해도 되나요?
어느정도는 가능하지만, 무작정 사용하지는 말고, 때로는 더 나은 대안이 있을 수 있습니다.
void compute(cmplx z, double d)
{
cmplx z2 = z+d; // c++ style
z2 = f(z2); // use z2
cmplx& z3 = *new cmplx(z+d); // Java style (assuming Java could overload +)
z3 = f(z3);
delete &z3;
}
z3의 서투른 new의 사용은 불필요할 뿐더러 관용적으로 사용하는 로컬 변수 (z2) 와 비교해서 느리기까지 합니다. 객체를 생성할 때 같은 스코프에서 해당 객체를 "delete"를 할 경우에는 "new"를 사용할 필요가 없습니다. 이런 객체는 로컬 변수여야 합니다.
'번역 > Bjarne Stroustrup's C++ Style and Technique FAQ' 카테고리의 다른 글
Why can't I assign a vector<Apple*> to a vector<Fruit*>? (0) | 2020.03.04 |
---|---|
Why can't I define constraints for my template parameters? (0) | 2020.03.04 |
Why doesn't overloading work for derived classes? (0) | 2019.12.09 |
Do we really need multiple inheritance? (0) | 2019.04.03 |
Why doesn't C++ have a universal class Object? (0) | 2019.03.07 |
댓글