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 }

猜你喜欢

转载自www.cnblogs.com/howld/p/10051155.html