1. 背景
C++多态的核心技术基础就是虚函数,虚函数允许我们使用同样的基类指针调用同一个方法的不同实现版本。我们Android使用Java开发过程中,方法重写技术自动实现了多态,C++角度可能更繁琐一些,本文从Java程序员思维角度来阐述C++虚函数及开发过程一些准则。
2. 什么是虚函数
在Java中我们实现继承结构的两个类:
class Base{
public void action(){
System.out.pritln("in Base");
}
}
class Sub extend Base{
public void action(){
System.out.println("in Sub");
}
}
public static void main(String[] args){
Base b = new Base();
b.action();
b = new Sub();
b.action();
}
Java直接覆盖后就会自动的调用到实际类的对应方法,但是在C++中不行。
class Base{
public:
void action();
}
void Base::action(){
std::cout>>("in Base");
}
class Sub:public Base{
public:
void action();
}
void Sub::action(){
std::cout>>("in Sub");
}
static void main(){
Base *b = new Base();
b->action();
b = new Sub();
b->action();
}
打印的结果是:
in Base
in Base
就算是b指向了Sub对象,但是打印的还是Base的方法,没有自动绑定,写惯了Java后马上慌了,怎么破。这里就需要用到我们今天的主人公”虚函数“了,在方法声明之前加上virtual这个函数就变成虚函数。我们在Base的action方法声明前加上virtual打印结果就变成了:
### 最后
**我坚信,坚持学习,每天进步一点,滴水穿石,我们离成功都很近!**
以下是总结出来的**字节经典面试题目**,包含:计算机网络,Kotlin,数据结构与算法,Framework源码,微信小程序,NDK音视频开发,计算机网络等。
# **字节高级Android经典面试题和答案**
![](https://img-blog.csdnimg.cn/img_convert/a611b24fcd8e373eb0ebd2d6aabad5eb.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/954c5194b125fd9954b39ca4c5c0e1ef.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**