96SEO 2026-02-20 08:20 6
程序调用函数时将使用哪个可执行代码块呢编译器负责回答这个问题。

将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编。
在c语言中在非常简单因为每个函数名都对应一个不同的函数。
在c中由于函数重载的缘故这项任务更复杂。
编译器必须查看函数参数以及函数名才能确定使用哪个函数。
然而c/c编译可以在编译过程完成这种联编。
在编译过程中进行联编被称为给静态联编又称为早期联编然而虚函数使这项工作变得更困难。
编译器必须生成能够在程序运行时选择正确使虚方法的代码这被称为动态联编又称为晚期联编。
多态就是函数调用的多种形态使用多态能够使得不同的对象去完成同一件事时产生不同的动作和结果。
1静态多态也成为静态绑定或前期绑定早绑定函数重载和运算符重载就属于静态多态。
静态多态也成为编译期间的多态编译器在编译期间完成的编译器根据函数实参的类型可能会进行隐式类型转换可推断出要调用那个函数如果又对应的函数就调用该甘薯否则出现编译错误
2动态多态也成为动态绑定或后期绑定晚绑定:在程序运行期间根据具体拿到的类型确定程序的具体行为调用具体的函数即运行时的多态。
在程序执行期间非编译期判断所英勇的实际类型根据其实际类型调用相应的方法。
同一操作作用于不同的对象可以有不同的执行结果产生不同的执行结果这就是多态性。
简单的说就是用基类的指针指向子类的对象
2、被调用的函数必须是虚函数且派生类必须对基类的虚函数进行重写
1、只有类的非静态成员函数前可以加virtual普通函数前不能加virtual
2、虚函数的virtual和虚继承的vittual是同一个关键字但实际上并没有任何关系。
虚函数的virtual是为了实现多态而虚继承的virtual是为了解决菱形继承的数据冗余和二义性
虚函数的重写也叫做虚函数的覆盖若派生类中有一个和基类完全相同的虚函数返回值类型相同函数名相同以及参数列表完全相同这种称为派生类的虚函数重写了基类的虚函数。
通过基类的指针或引用子类对象从而调用我们写的虚函数此时根据不同类型的对象调用的就是不同的函数产生的也是不同的结果进而实现了动态多态。
调用哪个类型的虚函数取决于基类指针指向或引用的对象是哪种类型的对象。
如果不使用基类的指针或引用去调用虚函数则只会调用基类的虚函数。
public://Speak函数就是虚函数//函数前面加上virtual关键字变成虚函数那么编译器在编译的时候就不能确定函数调用了。
virtual
注意在重写基类虚函数时派生类的虚函数不加virtual关键字也可以进行动态多态主要原因是因为继承后基类的虚函数被继承下来了在派生类中依旧保持虚函数属性。
但是这种写法不是很规范因为派生类也有可能会被继承为了区分虚函数建议在派生类的虚函数前也加上virtual关键字。
动态多态中虚函数默认参数调用者是哪个类就用对应类中的函数的默认参数如果不是使用默认参数那么就会用传递进去的参数
public:Base(){coutBase()endl;}~Base(){cout~Base()endl;}virtual
public:Child(){coutChild()endl;}~Child(){cout~Child()endl;}void
show456//多态中虚函数默认参数调用者是哪个类就用对应类中的函数的默认参数Base
show123d-show();//如果不是使用默认参数那么就会用传递进去的参数//参数值得优先顺序
在堕胎中通常父类的虚函数的实现是某无意义的主要都是调用了子类重写的内容那我们就可以将虚函数写成纯虚函数。
c通过使用纯虚函数提供未实现的函数。
在基类本身生成对象时不合理的时候比如动物作为一个基类派生出老虎等子类但动物本身这基类直接生成对象时不合理的所以为解决这问题方便使用类的多态性引入了纯虚函数的概念将函数定义为纯虚函数则编译器要求在派生类中必须要重新给纯虚函数以实现多态性
纯虚函数并不需要实现如果一个类中有纯虚函数那么这个类就是抽象类如果派生类没有把基类的纯虚函数全部实现那么派生类还是抽象类。
普通函数的继承是一种实现继承派生类继承了基类函数的实现可以使用该函数。
虚函数的继承是一种接口继承派生类继承的是基类虚函数的接口目的是为了重写达成多态。
运算符动态生成的派生类对象而释放该对象时是通过释放该基类指针来完成的就会导致delete的时候只会调用基类的析构函数而不会调用派生类的析构函数如果派生类的析构函数中有释放成员内存空间可能会造成内存泄漏。
所以C
规定需要将基类的析构函数声明为虚函数即虚析构函数。
只要基类的析构函数是虚函数那么派生类的析构函数不论是否用virtual关键字声明都自动成为虚析构函数。
一般来说一个类如果定义了虚函数则最好将析构函数也定义成虚函数。
动态多态使用时如果子类中有属性开辟到堆区那么父类指针在释放时无法调用到子类的析构代码会造成内存泄漏解决这个问题就需要用到虚析构函数。
和包含普通纯虚函数的类一样包含了纯虚析构函数的类也是抽象类不能被实例化测试代码如下
public:Animal(){coutAnimal()endl;}//将基类的析构函数声明为
//常用方法---派生类里面是否有指针//可以把基类的虚析构函数
第二种方法将虚析构函数声明定义为纯析构函数但是纯析构函数必须在类外实现//
1];strcpy(this-d_name,name);}//当基类的析构函数声明为
//虚拟析构不仅释放了基类的new空间也释放了派生类的new空间//动物类
//因为基类中有纯虚函数(纯虚析构函数)所以该类是抽象类抽象类不能实例化//抽象类只能通过继承
第二种方法将虚析构函数声明定义为纯析构函数但是纯析构函数必须在类外实现
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback