类中函数重载
必须在同一个类中进行
子类无法重载父类的函数,父类同名函数将被名称覆盖
重载是在编译期间根据参数类型和个数决定函数调用
类中函数重写
必须发生于父类与子类之间
并且父类与子类中的函数必须有完全相同的原型
使用virtual声明之后能够产生多态(如果不使用virtual,那叫重定义)
多态是在运行期间根据具体对象的类型决定函数调用
#include <iostream>
using namespace std;
class Parent
{
public:
void print (int a)
{
cout << "a:" <<a << endl;
}
};
class Child :public Parent
{
public:
void print (int a,int b)
{
cout << "a:" << a << " b:" << b << endl;
}
};
void main ()
{
Child c1 ;
// c1.print (5);
//这样写是不对的(见图1),因为重载只能在类的内部,父类与子类之间是重写,不能重载
c1.Parent ::print(5);
//这样写是可以的,因为是public继承,所以指定域是可以的,但这并不是重载
system("pause" );
}
图1:
1 子类里面的print无法重载父类里面的print
2 当父类和子类有相同的函数名、变量名出现,发生名称覆盖
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-11 11:31:32