非多态的继承情况下,基类指针可以指向派生类对象么?
生活随笔
收集整理的這篇文章主要介紹了
非多态的继承情况下,基类指针可以指向派生类对象么?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
class Base { // 基類
public:Base(int aa=88) : a(aa) {}void f() { // 非virtualcout<<"Base"<<endl;}int a;
};
class Derived : public Base { // 派生類
public:Derived(int ba= 77, int bb = 66) : a(ba), b(bb) {}void f() { // 非多態cout<<"Derived"<<endl;}int a;int b;
};int main(){Base* p = new Derived();p->f(); // Base(*p).f(); // Basestatic_cast<Derived*>(p)->f(); // Derivedcout<<p->a<<endl; // 88 基類cout<<static_cast<Derived*>(p)->a<<endl; // 77cout<<static_cast<Derived*>(p)->b<<endl; // 66delete p;return 0;
}
備注:非多態情況下,基類的指針可以指向派生類的對象,但是調用方法時,使用的是它本身類型的方法,因為他不符合多態的定義。
?
總結
以上是生活随笔為你收集整理的非多态的继承情况下,基类指针可以指向派生类对象么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python学习实践教程】10个Pyt
- 下一篇: 调试网络收发不通问题