1.重载(overload),这只是在C++编译时就完成区分,它是指编写了一个与原函数同名,但是参数不同的函数的实现,对于返回参数不做明确的要求,比如int func(int a)与void func(char b)就是重载。他与多态无任何关系,他们各自在编译阶段的生成结果分别是 func_int与func_char.我们常称这种机制叫做早绑定技术。 2.重...
在C++中,虚函数可以在子类中被重载。也就是说,子类可以提供一个与父类虚函数同名的函数,这个函数将覆盖父类的虚函数。 在上述代码中,Derived类、DerivedBase类和Base类都有一个名为foo的虚函数。当我们通过Base指针调用foo函数时,实际上调用的是Derived类的foo函数,因为Derived类的foo函数覆盖了Base类的foo函数。
在C++中,虚函数可以在子类中被重载。也就是说,子类可以提供一个与父类虚函数同名的函数,这个函数将覆盖父类的虚函数。 在上述代码中,Derived类、DerivedBase类和Base类都有一个名为foo的虚函数。当我们通过Base指针调用foo函数时,实际上调用的是Derived类的foo函数,因为Derived类的foo函数覆盖了Base类的foo函数。
override: 检查派生类虚函数是否重写了基类某个虚函数,如果没有重写编译报错 class Car{ public: virtual void Drive(){} }; class Benz :public Car { public: virtual void Drive() override {cout << "Benz-舒适" << endl;} }; 2.5 重载、覆盖(重写)、隐藏(重定义)的对比 下面我们通过一张图来对...