본문 바로가기

전체 글51

Why can't I define constraints for my template parameters? 왜 템플릿 파라미터에 제약을 둘 수 없는건가요? 글쎄요, 꽤 쉽게 일반적으로 할 수 있습니다. 다음 예제를 생각해봅시다 : template void draw_all(Container& c) { for_each(c.begin(),c.end(),mem_fun(&Shape::draw)); } 위의 예제에 타입 에러가 있다고 하면, 상당히 복잡한 for_each() 호출에서 해결을 해야 할것입니다. 예를 들자면, 만약 container 요소의 타입이 int라고 하면, for_each() 호출과 관련된 발견하기 어려운 오류들이 발생할 것입니다. (왜냐하면 int 타입에서 Shape::draw()를 호출할 수 없기 때문입니다.) 이런 오류를 미리 발견하기위해 다음과 같이 작성할 수 있습니다: template voi.. 2020. 3. 4.
Can I use "new" just as in Java? 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"를 사용할 필요가 없습니다. 이런 객체는.. 2019. 12. 9.
Why doesn't overloading work for derived classes? 파생 클래스에서 오버로딩이 안 되는 이유가 무엇인가요? (많은 비슷한 질문들에서) 이 질문은 보통 몇몇 사람들이 잘못 예측하는 다음의 예제 때문에 나오게 되는데, #include using namespace std; class B { public: int f(int i) { cout 2019. 12. 9.
드디어 스택 비추 가능 ㅅㅅ 진.짜.겁.나.비.추.가.능.한.겁.니.다 잡소리 쓰면 전부 "비추" 2019. 5. 24.