评论

收藏

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

编程语言 编程语言 发布于:2021-07-05 13:42 | 阅读数:267 | 评论:0

  
c++

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

java

  • java语言中父类和子类的同名函数做的是重载处理
  子类中调用本函数的名字的函数,默认的是调用父类中本函数名的函数,即:
  class Base
  func();
  class Sub
  func()
  {
  func();     // 其实默认为 this.func();即调用的是父类的func()函数,而不是递归的调用自己,这样不就是死循环了嘛
  }

  
关注下面的标签,发现更多相似文章