程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++:阻止派生類(derived class)重新定義虛函數(final&sealed)

C++:阻止派生類(derived class)重新定義虛函數(final&sealed)

編輯:關於C++

阻止派生類重新定義虛函數, 在java和C#中可以很簡單的實現(finale&sealed),

但在C++中則需要使用public繼承+復合(composition)的方法;

注意: 使用私有繼承(private), 無法實現此要求.

如:

/************************************************* 
File: test.cpp 
Copyright: C.L.Wang 
Author: C.L.Wang 
Date: 2014-04-11 
Description: test 
Email: [email protected] 
**************************************************/
      
/*eclipse cdt, gcc 4.8.1*/
      
#include <iostream>  
      
using namespace std;  
      
class Timer {  
public:  
    virtual void onTick() const {  
        std::cout << "Tick! Tick! Tick! " << std::endl;  
    }  
};  
      
class Widget : private Timer {  
public:  
    void say() {  
        onTick();  
    }  
private:  
    virtual void onTick() const override{  
        std::cout << "Widget Tick!" << std::endl;  
    }  
};  
      
class AnotherWidget : private Widget {  
public:  
    void say() {  
        onTick();  
    }  
private:  
    virtual void onTick() const override{  
        std::cout << "Another Widget Tick!" << std::endl;  
    }  
};  
      
int main () {  
    Widget w;  
    w.say();  
    AnotherWidget aw;  
    aw.say();  
    return 0;  
}

輸出:

Widget Tick!  
Another Widget Tick!

注意: 私有繼承, 仍然可以繼續重新定義虛函數;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved