class Widget {
public:
Widget();
virtual ~Widget();
virtual std::size_t size() const;
virtual void normalize();
void swap(Widget& other); // see Item 25
...
};
void doProcessing(Widget& w)
{
if (w.size() >10 && w != someNastyWidget) {
Widget temp(w);
temp.normalize();
temp.swap(w);
}
}
template
void doProcessing(T& w)
{
if (w.size() >10 && w != someNastyWidget) {
T temp(w);
temp.normalize();
temp.swap(w);
}
}
class Widget {
public:
Widget();
virtual ~Widget();
virtual std::size_t size() const;
virtual void normalize();
void swap(Widget& other);
};
template
void doProcessing(T& w)
{
if (w.size() >10 && w != someNastyWidget) {
...
if (w.size() >10 && w != someNastyWidget) ...
新闻热点
疑难解答