zoukankan      html  css  js  c++  java
  • 隐藏

    #include <iostream>
    
    using namespace std;
    
    class Test
    {
    public:
        /*virtual*/ void print()
        {
            cout << "Test::print" << endl;
        }
    
        void test_print()
        {
            print();
        }
    };
    
    class Sub : public Test
    {
    public:
        /*virtual*/ void print()
        {
            cout << "Sub::print" << endl;
        }
    };
    
    int main()
    {
        Sub * p = new Sub();
        p->test_print();
    
        return 0;
    }

    此时的输出结果是:Test::print

    原因:此时虽然父类的 print 被隐藏了,但是 test 函数中 print 默认的作用域是Test::print,所以此时调用的是父类的。子类内存:父类 print (被隐藏了,但是地址还是在的),父类 test_print,子类 print

    当加上 virtual 关键字,那么在子类中父类的函数就被重写了,所以调用的就是子类的。子类内存:父类 test_print,子类 print

  • 相关阅读:
    spring cloud教程
    ideaaaaaaaaa
    Django
    Django 基础介绍
    Pychram
    python
    python
    python
    Python
    Python -- Scrapy 命令行工具(command line tools)
  • 原文地址:https://www.cnblogs.com/chen-cai/p/9988184.html
Copyright © 2011-2022 走看看