interface是OO很重要的概念,也是實現abstraction的方法之一,C#、Java都另外提供了interface這個keyword,C++並沒有interface,必須用abstract base class模擬interface。

C++的abstract base class的定義是:若class含有一個以上的pure virtual function,則該class為abstract base class。

 1}


執行結果

(原創) 如何使用abstract base class模擬interface? (C/C++)Study


什麼是pure virtual function呢?21行

(原創) 如何使用abstract base class模擬interface? (C/C++)virtual string Job() = 0;


將function名稱加上=0後,則為pure virtual function,此function必須被derived class重新override定義。

值得注意的是16行

{


並沒有abstract字眼,所以C++ compiler完全看是否有一個以上的pure virtual function決定此class是否為abstract base class,但C++/CLI則必須加上abstract。

36行derived class要override的member function

}


也不用加上virtual或override,但C++/CLI要強制加上virtual和override。

Conclusion
C++沒有interface,但只要透過abstract base class這個小技巧,仍可實現OO的interface概念。

See Also
(原創) 如何使用abstract base class模擬interface? (初級) (C++/CLI)

相关文章:

  • 2021-07-19
  • 2021-11-28
  • 2022-02-04
  • 2021-09-27
  • 2021-06-23
  • 2021-10-13
  • 2022-01-16
  • 2021-08-06
猜你喜欢
  • 2021-07-31
  • 2021-10-03
  • 2022-02-20
  • 2022-12-23
  • 2021-08-17
  • 2021-08-22
相关资源
相似解决方案