c++子类继承父类函数调用特性原理以及与java的对比

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎联系我qq2488890051 https://blog.csdn.net/kangkanglhb88008/article/details/84402811

c++

  • c++中子类继承了父类,子类对象的函数和变量会接着添加在父类对象的内存后面,以此类推。。。
  • 如果c++中父类的那个变量或者函数声明为virtual虚函数,那么子类对象的同名函数就直接覆盖了(即在内存中真正的覆盖,父类的这个函数已经不在了)父类对象的这个函数
  • 如果没有声明父类函数为virtual,那么子类对象中的同名函数的名字会隐藏掉父类的同名函数(即父类此名字函数(无论父类中重载了几个这个名字的函数)完全不可见了,但是函数还是在的),但是这时候又一定要调用父类的这个同名函数的话,怎么办呢(虽然父类此函数名字被覆盖了,但是父类的这个函数还是存在的呀,当然就可以调用啦),我们就需要显式指定调用:                        (通过class::funtion_name)。  

java

  • java语言中父类和子类的同名函数做的是重载处理

子类中调用本函数的名字的函数,默认的是调用父类中本函数名的函数,即:

class Base

         func();

class Sub

        func()

        {

                func();     // 其实默认为 this.func();即调用的是父类的func()函数,而不是递归的调用自己,这样不就是死循环了嘛

        }

猜你喜欢

转载自blog.csdn.net/kangkanglhb88008/article/details/84402811