WEB开发网
开发学院软件开发C++ C++中的虚函数 阅读

C++中的虚函数

 2010-10-15 09:07:57 来源:Web开发网   
核心提示:7.在基类中调用继承类的函数(如果此函数是虚函数才能如此)还是先看例子:class A {public: virtual void fun() { cout << "A::fun" << endl; } void show() { fun(); }};class B : pu

7.在基类中调用继承类的函数(如果此函数是虚函数才能如此)还是先看例子:

class A {
public:
   virtual void fun() {
     cout << "A::fun" << endl;
   }
   void show() {
     fun();
   }
};
class B : public A {
public:
   virtual void fun() {
     cout << "B::fun" << endl;
   }
};
int main() {
   A a;
   a.show();

   return 0;
}

打印结果:A::fun

在6中的例子中,test(A *a)其实有一个继承类指针向基类指针隐式转化的过程。可以看出利用虚函数我们可以在基类调用继承类函数。但如果不是虚函数,继承类指针转化为基类指针后只可以调用基类函数。反之,如果基类指针向继承类指针转化的情况怎样,这只能进行显示转化,转化后的继承类指针可以调用基类和继承类指针。如下例子:

class A {
public:
  void fun() {
    cout << "A::fun" << endl;
  }

};
class B : public A {
public:
  void fun() {
  cout << "B::fun" << endl;
  }
  void fun0() {
    cout << "B::fun0" << endl;
  }
};
int main() {
  A *a=new A;
  B *b=new B;
  A *pa;
  B *pb;
  pb=static_cast<B *>(a); //基类指针向继承类指针进行显示转化
  pb->fun0();
  pb->fun();
    return 0;
}

上一页  1 2 3 4 5 

Tags:函数

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接