본문 바로가기

보편 참조2

보편참조에 대한 중복적재 대신 사용할수 있는 기법들 1 1. 중복적재를 포기한다 중복 적재 버전에 각자 다른 이름을 붙여 보편 참조에 대한 단점을 피할 수 있다. 하지만 생성자의 이름은 언어에 의해 고정되기 때문에 중복적재가 필요할 수 있다. 2. const T& 매개변수를 사용한다. 보편 참조 매개변수 대신 const에 대한 왼값 참조 매개변수를 사용한다. 이런 설계는 원하는 만큼 효율적이지 않다. 3. 값 전달 방식의 매개변수를 사용한다 참조 전달 매개변수 대신 값 전달 매개변수를 사용한다. 복사될 것이 확실한 객체는 값으로 전달하는 것을 고려하는 것이 좋다. 앞에 설명했던 예제의 Person을 사용해 결과를 보도록 하자 class Person { public: explicit Person(std::string n)// T&& 생성자를 대체한다 : nam.. 2020. 7. 22.
보편 참조에 대한 중복적재를 피하라 // 사람 이름 하나를 매개변수로 받고, 현재 날짜와 시간을 기록하여 전역 자료구조에 추가하는 예제 std::multiset names;// 전역 자료구조 void logAndAdd(const std::string& name) { auto now = std::chrono::system_clock::now();// 현재 시간을 얻고 log(now, "logAndAdd");// 로그에 기록 names.emplace(name);// 이름을 전역 자료구조에 추가 } std::string petName("Darla"); logAndAdd(petName);// 왼값 std::string을 넘겨줌 logAndAdd(std::string("Persephone"));// 오른값 std::string을 넘겨줌 logAnd.. 2020. 7. 21.