当前位置: 首页 > wzjs >正文

社交网站开发流程媒体宣传推广方案

社交网站开发流程,媒体宣传推广方案,网站关键词,文化建设素材一、基本概念 同一操作作用于不同的对象,产生不同的执行结果 👉 就像「按F1键」:在Word弹出帮助文档,在PS弹出画笔设置,​同一个按键触发不同功能 (1)多态类型 类型实现方式绑定时机​静态多态…

一、基本概念

同一操作作用于不同的对象,产生不同的执行结果
👉 就像「按F1键」:在Word弹出帮助文档,在PS弹出画笔设置,​同一个按键触发不同功能


(1)多态类型

类型实现方式绑定时机
静态多态函数重载、运算符重载编译时绑定
动态多态虚函数+继承体系运行时绑定

(2)动态多态三要素

多态满足条件
  • 有继承关系
  • 子类重写父类中的虚函数
多态使用条件
  • 父类指针或引用指向子类对象

重写:函数返回值类型 函数名 参数列表 完全一致称为重写 (缺一不可)

class 父类名 {
public:virtual 返回类型 函数名(参数列表) {// 函数体}
};

(3)示例代码

// 父类
class Animal {
public:virtual void speak() {  // 1. 虚函数声明cout << "动物发声" << endl;}
};// 子类
class Cat : public Animal { // 1. 继承关系
public:void speak() override { // 2. 重写虚函数cout << "喵喵" << endl; }
};// 多态调用
void doSpeak(Animal& animal) { // 3. 父类引用接收子类对象animal.speak(); // 运行时决定调用哪个实现
}void doSpeak(Animal *animal) {// 4.用指针接收子类对象animal->speak();
}void test() {Cat cat;doSpeak(cat); // 输出:喵喵
}

(4)重要特性

函数重写严格一致:(此处是函数内参数不一致)

// 错误示例:参数不同
class Animal { virtual void func(int) };
class Cat : public Animal { void func() }; // 不会触发多态

二、多态原理

当子类重写父类的虚函数,子类中的虚函数表内部,会替换成 子类的虚函数地址

class Animal
{
public://虚函数virtual void speak(){cout << "动物在说话" << endl;}
};
//猫类
class Cat : public Animal
{
public://重写 函数返回值类型 函数名 参数列表 完全相同virtual void speak(){cout << "小猫在说话" << endl;}
};

原理概况

当父类的指针或者引用指向子类对象时候,发生多态

Animal & animal = cat;
animal.speak();
vfptr - 虚函数(表)指针v - virtual
f - function
ptr - pointervtable - 虚函数表v - virtual
f - function
table - table

三、纯虚函数和抽象类

在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容

因此可以将虚函数改为纯虚函数,当类中有了纯虚函数,这个类也称为抽象类

纯虚函数语法:virtual 返回值类型 函数名(参数列表)= 0 ;

 virtual void func() = 0;

抽象类特点:
1、无法实例化对象

若Base是抽象类,则下面两行报错
Base b;
new Base;

2、子类必须重写抽象类中的纯虚函数,否则也属于抽象类

写纯虚函数意义就是想让子类重写一遍纯虚函数


四、虚析构与纯虚析构

1.核心问题

内存泄漏场景

class Animal {
public:~Animal() {  // ❌ 普通析构cout << "Animal析构" << endl;}
};class Cat : public Animal {
public:~Cat() {cout << "Cat析构" << endl;delete[] m_data;  // 堆内存资源}
private:int* m_data = new int[100];
};void test() {Animal* pet = new Cat();pet->speak();delete pet;  // 仅调用Animal析构 → 内存泄漏!
}

执行结果

Animal析构
(Cat析构未被调用 → m_data内存泄漏)

2.解决方案对比

方案类型语法示例类性质实现要求使用场景
虚析构virtual ~Animal() {}普通类必须实现需要实例化基类对象
纯虚析构virtual ~Animal() = 0;抽象类必须单独实现强制子类实现特定行为

3.具体实现

1. 虚析构函数

class Animal {
public:virtual ~Animal() {  // ✅ 虚析构声明cout << "Animal虚析构" << endl;}
};// 正确执行结果:
// Cat析构
// Animal虚析构

2. 纯虚析构函数

class Animal {
public:virtual ~Animal() = 0;  // 纯虚析构声明
};// 必须单独实现
Animal::~Animal() {  // ✅ 纯虚析构实现cout << "Animal纯虚析构" << endl;
}

特性

  • 使类成为抽象类(无法实例化)
  • 子类必须实现析构函数
class Cat : public Animal {
public:~Cat() override {  // 必须实现cout << "Cat析构" << endl;}
};

http://www.dtcms.com/wzjs/370388.html

相关文章:

  • 全屋整装装修效果杭州seo搜索引擎优化公司
  • 山西正规网站建设报价公司汽车品牌推广策划方案
  • 微信公众号怎么做链接网站刚刚中国宣布重大消息
  • 网站必须做301重定向吗东莞网络营销公司
  • 廊坊建站软件郑州网站建设外包
  • 慕枫网站建设semantic
  • 2017做网站挣钱吗种子搜索神器网页版
  • 网站怎么做飘窗免费com域名注册永久
  • 文教设施网站制作方案排名网
  • 网站建设公司企业模板成都网站设计公司
  • 网站建设企业如何为公司建设网络营销首先要
  • 赤峰网站建设培训重庆seo网站排名
  • 电子类网站建设宁波正规seo快速排名公司
  • b2b电子商务网站的主要类型有哪些南通关键词优化平台
  • 建站如何挣钱郑州千锋教育培训机构怎么样
  • 绍兴做公司网站的公司关键词指数查询
  • 中国培训网旧版优化大师
  • 手机网站开发技巧seo课程简介
  • 零起飞网站建设工作室抖音网络营销案例分析
  • 鄂尔多斯市建设网站百度推广公司哪家比较靠谱
  • 中央新闻联播湖南正规seo优化报价
  • 阜阳网站建设哪家好客户引流推广方案
  • 建设银行 网站查询密码小红书推广引流软件
  • 陕西机械加工网seo建站优化推广
  • 淘宝京东拼多多购物券网站怎么做朝阳网站建设
  • 网站必须做百度推广才能被别人搜到吗自动引流免费app
  • wordpress修改url无法打开莱阳seo排名
  • 商务网站创建设计方案站长工具网站推广
  • php的网站怎么做站长工具名称查网站
  • 网站建设企业建站模板关键词全网搜索工具