C++ 虚函数的两个例子

Posted howld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 虚函数的两个例子相关的知识,希望对你有一定的参考价值。

1. 第一个例子是朋友告诉我Qt中的某个实现

 1 #include <iostream>
 2 
 3 // Qt中的某个实现
 4 class A{
 5 public:
 6     A() = default;
 7     virtual ~A() = default;
 8 
 9     virtual void add(){ std::cout << "A add" << std::endl; };
10 
11     void print(){ this->add(); };
12 };
13 
14 class B : public A{
15 public:
16     B() = default;
17 
18     virtual void add(){ std::cout << "B add" << std::endl; }
19 };
20 
21 int main(int argc, char **argv){
22     B b;
23     b.print(); // B add
24 
25     return 0;
26 }

 

2. 第二个例子是我从SFML中看到的某个实现

 1 #include <iostream>
 2 
 3 // SFML中实现m_window.draw(b)
 4 class A{
 5 public:
 6     A() = default;
 7     virtual ~A() = default;
 8 
 9     virtual void add() = 0;
10 };
11 
12 class B : public A{
13 public:
14     B() = default;
15 
16 private:
17     virtual void add(){ std::cout << "B add" << std::endl; }
18 };
19 
20 void draw(A &a){
21     a.add();
22 }
23 
24 int main(int argc, char **argv){
25     B b;
26 
27     draw(b); // B add
28 
29     return 0;
30 }

 

以上是关于C++ 虚函数的两个例子的主要内容,如果未能解决你的问题,请参考以下文章

一个例子搞懂C++的虚函数和纯虚函数

c++中的纯虚函数机制如何从DLL中暴露函数

一个例子彻底搞懂C++的虚函数和纯虚函数

初学C++之虚函数及抽象类

C++ 虚函数和纯虚函数的区别

学习攻略C++虚函数表及多态内部原理详解