我有以下代码:
class Carb {
public:
virtual void calorie() = 0; // pure virtual
}
class Omelette : Carb {
public:
void calorie() {/*do something*/}; // non-virtual
}
class Breakfast {
public:
Breakfast(const Carb &somecarb):
my_carb(somecarb){}
private:
const Carb &my_carb;
}
}
我知道Carb是一个虚拟类,因此不能是一个实例,但是我们可以使用来自以下stackoverflow问题的指针。
C++ : Cannot declare field to be of abstract type
C++ error: cannot declare field to be of abstract type
但是,它似乎也可以通过声明一个const引用来实现,就像我上面的代码一样。我的问题是,将一个类字段作为一个抽象类的常量引用是否有效?为什么这样做?