欢迎光临散文网 会员登陆 & 注册

条款12 override函数添加override

2022-09-19 12:38 作者:马芮  | 我要投稿

// 条款12 override函数添加override

class Base

{

public:

    virtual void doWork(); // base class virtual function


};

class Derived : public Base

{

public:

    virtual void doWork();


};

std::unique_ptr<Base> upb = std::make_unique<Derived>();

upb->doWork();



class Widget

{

public:

    void doWork() &;

    void doWork() &&;

};

Widget makeWidget(); // factory function (return rvalue)

Widget w; // normal object (lvalue)


w.doWork();

makeWidget().doWork();



void doSomething(Widget& w); // only lvalue

void doSomething(Widget&& w); // only rvalue


class Widget

{

public:

    using DataType = std::vector<double>;

    // DataType& data() { return values; }

    DataType& data() & { return values; } // lvalue

    DataType data() && { return std::move(values); } // rvalue

private:

    DataType values;

};

Widget w;

// auto vals1 = w.data();


Widget makeWidget();

// auto vals2 = makeWidget().data();


auto vals1 = w.data(); // calls lvalue override for Widget::data, copy-constructor

auto vals2 = makeWidget().data(); // rvalue, move-ctor


条款12 override函数添加override的评论 (共 条)

分享到微博请遵守国家法律