我碰到下面的代码,我不能对谷歌发现,为什么下面的语句是有效的C++:C++:切片基地右值?
Base&& b = Derived();
请解释一下,或给参考
这里是一个示例代码:
#include <iostream>
using namespace std;
class Base{
public:
virtual ~Base(){}
virtual void say_hi() { cout << "hi base"; }
};
class Derived : public Base{
public:
virtual ~Derived(){}
virtual void say_hi() { cout << "hi derived"; }
};
int main(int argc, const char * argv[]) {
Base&& b = Derived();
b.say_hi();
return 0;
}
打印:
hi derived
你能理解为什么'派生d; Base&b = d;'会有效吗?如果是这样,你可以[编辑]你的问题来解释你觉得区别在哪里? – Angew