zoukankan      html  css  js  c++  java
  • 关于C++虚函数的一点点~~

      Talk is cheap, show you the code:

    1.(普通的)

     1 #include<cstdio>
     2 
     3 class B {
     4  public:
     5      void func() const {
     6          puts("B!");
     7      }
     8 };
     9 
    10 class C : public B {
    11  public:
    12      void func() const {
    13          puts("C!");
    14      }
    15 };
    16 
    17 void hehe(const B &b) {
    18     b.func();
    19 }
    20 
    21 int main() {
    22     C c;
    23     hehe(c);
    24     return 0;
    25 }

      运行结果:

      (应该是发生了向上转型什么的吧)

    2. 基类的函数变为虚函数:

     1 #include<cstdio>
     2 
     3 class B {
     4  public:
     5      virtual void func() const {
     6          puts("B!");
     7      }
     8 };
     9 
    10 class C : public B {
    11  public:
    12      void func() const {
    13          puts("C!");
    14      }
    15 };
    16 
    17 void hehe(const B &b) {
    18     b.func();
    19 }
    20 
    21 int main() {
    22     C c;
    23     hehe(c);
    24     return 0;
    25 }

      运行结果:

      底层的原理暂时还不懂,有空再补充。

  • 相关阅读:
    模板方法模式
    策略模式
    享元模式
    组合模式
    桥接模式
    外观模式
    代理模式
    装饰者模式
    适配器模式
    类之间的关联关系和依赖关系
  • 原文地址:https://www.cnblogs.com/Newdawn/p/4912753.html
Copyright © 2011-2022 走看看