虚函数和作用域(C++ primer 第五版)P550
生活随笔
收集整理的這篇文章主要介紹了
虚函数和作用域(C++ primer 第五版)P550
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、程序
#include "stdafx.h" #include "iostream" using namespace std;class Base { public:virtual void fun(){cout<<"Base::fun()"<<endl;} };class Derived1 : public Base { public:void fun(int n){cout<<n<<" Derived1:fun(int)"<<endl;} /* 新加,隱藏 */virtual void fun2(){cout<<"Derived1::fun2()"<<endl;} /* 新加 */ };class Derived2 : public Derived1 { public:virtual void fun(){cout<<"Derived2:fun()"<<endl;} /* 新加,virtual,覆蓋 */void fun(int n){cout<<n<<" Derived2:fun(int)"<<endl;} /* 新加,隱藏 */virtual void fun2(){cout<<"Derived2::fun2()"<<endl;} /* 新加,virtual,覆蓋 */ };int _tmain(int argc, _TCHAR* argv[]) {Base base;Derived1 der1;Derived2 der2;Base *pb = &base, *pd1 = &der1, *pd2 = &der2;pb->fun(); /* Base::fun() */pd1->fun(); /* Base::fun() */pd2->fun(); /* Derived2:fun() */cout<<endl;//pb->fun2(); /* error:fun2不是base的成員 *///pd1->fun2(); /* error:fun2不是base的成員 *///pd2->fun2(); /* error:fun2不是base的成員 */Derived1 *pdd1 = &der1, *pdd2 = &der2;pdd1->fun2(); /* Derived1::fun2() */pdd2->fun2(); /* Derived2::fun2() */pdd1->fun(1); /* 1 Derived1:fun(int) */pdd2->fun(2); /* 2 Derived1:fun(int), 注意fun(int)不是虛函數 *///pdd1->fun(); /* error:Derived1中fun()函數已經被fun(int)隱藏 *///pdd2->fun(); /* error:Derived1中fun()函數已經被fun(int)隱藏 */cout<<endl;Derived2 *pddd2 = &der2;pddd2->fun(); /* Derived2:fun() */pddd2->fun2(); /* Derived2::fun2() */pddd2->fun(3); /* 3 Derived2:fun(int) */return 0; }
二、運行結果
總結
以上是生活随笔為你收集整理的虚函数和作用域(C++ primer 第五版)P550的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你透彻了解红黑树
- 下一篇: 交换函数swap的三种实现方法