關於產品低垂從基類派生的類,以下的例子:C++中,如何將基礎對象向下轉換爲派生對象?
與(2)(3)(4),有助於解釋指針和參考 futher之間的差異? (3),如何解釋g ++給出的錯誤信息;
class Base {};
class Derived : public Base {};
int main()
{
// example (1)
Derived d;
Base* b = &d; // its ok, implict
// example (2)
Derived d;
Base* b = &d;
Derived* d2 = (Derived*)b; // its ok!
// example (3)
Derived d;
Base& b_ref = d; // its ok, implict
Derived& d_ref1 = (Derived)b_ref; // error, error: no matching function for call to `Drievd::Drievd(Base&)'
// example (4)
Derived& d_ref2 = *((Derived*)(&b_ref)); // its ok
}
「關於從派生類向超類下降的問題」 – juanchopanza
@StoryTeller感謝提醒,它是我的錯! – Jcppython
示例3應該是Derived&d_ref1 =(Derived&)b_ref;'以匹配較早的模式 –