C++的多态---虚函数

📅 2026/8/17 23:18:44
C++的多态---虚函数
虚函数 virtual带有virtual关键词声明的是虚函数virtualvoidfunction();1、基类当中的虚函数必须实现基类中可以有默认实现virtualvoidmakeSound(){cout"动物发出声音"endl;}此时,子类可以选择重写该方法,也可以不重写(直接继承父类的默认实现)。也可以是空实现virtualvoidmakeSound(){}不可以不实现virtualvoidmakeSound();//错误只是普通虚函数(无 = 0):仅声明不实现(无函数体)是不合法的—— 编译器会通过编译,但链接阶段会报错(找不到函数的定义),因为普通虚函数要求必须有实现(哪怕是空实现)。2、类可以实例化但如果虚函数没有实现则不能调用该虚函数3、可以让所有派生类是虚的父类的虚函数特性会沿继承链传递 —— 只要父类(任意一层)标记了 virtual,后续子类的重写方法默认都是虚函数,无需重复标记;4、如果使用指向对象的引用或指针来调用虚方法,程序将使用为对象类型定义的方法,而不使用为引用或指针类型定义的方法。这称为动态联编或晚期联编。这种行为非常重要,因为这样基类指针或引用可以指向派生类对象。—重要5、如果定义的类将被用作基类,则应将那些要在派生类中重新定义的类方法声明为虚的。override—只是增加编译器校验—防止隐藏显式标记子类中的方法是对父类虚函数的重写编译器校验:如果标注了 override 的方法并没有正确重写父类虚函数(比如方法名拼写错误、参数列表不一致),编译器会直接报错,避免隐藏的逻辑错误。代码可读性:一眼就能看出该方法是重写父类的,提升代码可维护性。voidmakeSound