• const修饰虚函数


    【1】程序1

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class Base
     5 {
     6 public:
     7     virtual void print() const = 0;
     8 };
     9 
    10 class Test : public Base
    11 {
    12 public:
    13     void print();
    14 };
    15 
    16 void Test::print()
    17 {
    18     cout << "Test::print()" << endl;
    19 }
    20 
    21 void main()
    22 {
    23     // Base* pChild = new Test(); //compile error!
    24     // pChild->print();
    25 }

    【2】程序2

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class Base
     5 {
     6 public:
     7     virtual void print() const = 0;
     8 };
     9 
    10 class Test : public Base
    11 {
    12 public:
    13     void print();
    14     void print() const;
    15 };
    16 
    17 void Test::print()
    18 {
    19     cout << "Test::print()" << endl;
    20 }
    21 
    22 void Test::print() const
    23 {
    24     cout << "Test::print() const" << endl;
    25 }
    26 
    27 void main()
    28 {
    29     Base* pChild = new Test();
    30     pChild->print();
    31 }
    32 /*
    33 Test::print() const
    34 */

    【3】程序3

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class Base
     5 {
     6 public:
     7     virtual void print() const = 0;
     8 };
     9 
    10 class Test : public Base
    11 {
    12 public:
    13     void print();
    14     void print() const;
    15 };
    16 
    17 void Test::print()
    18 {
    19     cout << "Test::print()" << endl;
    20 }
    21 
    22 void Test::print() const
    23 {
    24     cout << "Test::print() const" << endl;
    25 }
    26 
    27 void main()
    28 {
    29     Base* pChild = new Test();
    30     pChild->print();
    31 
    32     const Test  obj;
    33     obj.print();
    34 
    35     Test obj1;
    36     obj1.print();
    37 
    38     Test* pOwn = new Test();
    39     pOwn->print();
    40 }
    41 
    42 /*
    43 Test::print() const
    44 Test::print() const
    45 Test::print()
    46 Test::print()
    47 */

    备注:一切皆在代码中。

    总结:const修饰成员函数,也属于函数重载的一种范畴。

    Good Good Study,  Day  Day  Up.

    顺序  选择  循环  总结

  • 相关阅读:
    (第二天)原型、继承
    (第一天)包装对象、作用域、创建对象
    你欺骗了我,可选参数必须位于所有参数最后
    反射之动态创建对象
    异步编程
    前端性能优化方法
    性能瓶颈分析方法
    性能测试应用领域
    <转>jmeter(十五)函数助手
    正则表达式基础知识
  • 原文地址:https://www.cnblogs.com/Braveliu/p/3622124.html
Copyright © 2020-2023  润新知