面试题答案
一键面试C++函数重载的条件
- 函数名相同:重载的函数必须具有相同的函数名。
- 参数列表不同:
- 参数个数不同:例如
void func(int);
和void func(int, int);
。 - 参数类型不同:例如
void func(int);
和void func(double);
。 - 参数顺序不同:例如
void func(int, double);
和void func(double, int);
。
- 参数个数不同:例如
- 与返回值类型无关:仅返回值类型不同不足以构成函数重载,比如
int func(int);
和double func(int);
不能构成重载。
虚函数调用
在一个包含基类和派生类的继承体系中,当基类的某个函数被声明为虚函数,在派生类中重写该虚函数后,通过基类指针指向派生类对象来调用该函数,调用的是派生类版本。原因是C++的多态性机制。当函数被声明为虚函数时,C++运行时系统会在运行时根据对象的实际类型(动态类型)来决定调用哪个版本的函数,而不是根据指针或引用的静态类型。在这种情况下,基类指针虽然静态类型是基类,但实际指向的是派生类对象,所以会调用派生类中重写的虚函数版本。