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

电子商务类网站aso优化的主要内容

电子商务类网站,aso优化的主要内容,浙江网站建设制作,企业网站怎么做的好看C虚函数是通过虚表实现的,虚函数的地址记录在需表中,只对象完成构造完成后,虚函数的地址才最终确定。 构造函数中调用虚函数 基类先于派生类构造,所以构造时没法调用到派生类的虚函数,也就是说只能调用到自己&#x…

C++虚函数是通过虚表实现的,虚函数的地址记录在需表中,只对象完成构造完成后,虚函数的地址才最终确定。

构造函数中调用虚函数

基类先于派生类构造,所以构造时没法调用到派生类的虚函数,也就是说只能调用到自己,也就是虚函数失去多态功能。

析构函数调用虚函数

派生类先于基类析构,所以析构时基类没法调用到派生类的虚函数,同样只能调用到自己,虚函数也失去多态功能。

代码

#include <iostream>class Base
{
public:Base(){std::cout << "Base Construct.  ";this->fun2("Base::Base");}virtual ~Base(){std::cout << "Base Destruct.  ";this->fun2("Base::~Base");}virtual void fun(){std::cout << "Base::fun" << std::endl;}virtual void fun2(const char* caller){std::cout << "Base::fun2, caller: " << caller << std::endl;}
};class Derive : public Base
{
public:Derive(){std::cout << "Derive Construct.  ";this->fun2("Derive::Derive");}~Derive() override{std::cout << "Derive Destruct.  ";this->fun2("Derive::~Derive");}void fun2(const char* caller) override{std::cout << "Derive::fun2: caller: " << caller << std::endl;}void fun() override{std::cout << "Derive::fun" << std::endl;}
};int main()
{Base *p = new Derive;delete p;return 0;
}

运行结果:

Base Construct.  Base::fun2, caller: Base::Base
Derive Construct.  Derive::fun2: caller: Derive::Derive
Derive Destruct.  Derive::fun2: caller: Derive::~Derive
Base Destruct.  Base::fun2, caller: Base::~Base

在构造函数函数或者析构函数中调用虚函数,通常IDE会有警告,为了消除警告可以通过域名符号调用虚函数,此时相当于直接指定函数地址,不需要通过虚表所以不会有警告

class Base
{
public:Base(){std::cout << "Base Construct.  ";Base::fun2("Base::Base"); // 虚函数}virtual ~Base(){std::cout << "Base Destruct.  ";Base::fun2("Base::~Base"); // 虚函数}virtual void fun(){std::cout << "Base::fun" << std::endl;}virtual void fun2(const char* caller){std::cout << "Base::fun2, caller: " << caller << std::endl;}
};

类函数指针

当类函数指针指向一个虚函数时,同样会触发多态,并不会直接调用函数指针对应的函数

#include <iostream>class Base
{
public:virtual void fun(){std::cout << "Base::fun" << std::endl;}};class Derive : public Base
{
public:void fun() override{std::cout << "Derive::fun" << std::endl;}
};int main()
{Base *p = new Derive;p->fun();p->Base::fun();auto pBFun = &Base::fun;auto pDFun = &Derive::fun;(p->*pBFun)();((Derive*)p->*pDFun)();return 0;
}

结果

Derive::fun
Base::fun
Derive::fun
Derive::fun

http://www.ds6.com.cn/news/9304.html

相关文章:

  • 人才招聘网网站策划方案网站关键词有哪些
  • 海南网站建设 小黄网络长沙百度快速排名优化
  • 太原 招聘 网站建设 技术经理4414站长平台
  • 平台网站建设的公司seo技术培训广东
  • 长沙网站建设费用公司网页设计模板
  • 公司网站管理属于什么职位网站优化外包顾问
  • 淄博论坛网站建设小红书seo软件
  • 管理系统网站开发报价百度推广后台登陆
  • 怎么注册自己网站吗百度官网首页登录
  • 自己做免费的网站百度推广软件
  • 简述网页制作步骤重庆seo优
  • 免费网站怎么做啊优秀软文范例
  • 赣州市赣县区建设局网站宁波网络优化seo
  • 网站买空间品牌营销成功案例
  • 嘉定网站建设公司网络推销平台有哪些
  • 做网站需要学什么语言谷歌排名规则
  • 综合返利商城网站建设西安百度推广客服电话多少
  • vue做前台网站百度排名优化咨询电话
  • 做企业网站百度推广客服怎么打电话搜狗搜索引擎网页
  • 百度推广代理加盟首页关键词排名优化
  • 做外贸自己建网站想做网络推广如何去做
  • app在线苏州网站优化公司
  • 电子元器件商城官网长沙seo代理
  • wordpress html音乐石家庄自动seo
  • psd网站首页图片交换友情链接的网站标准是什么
  • 如何为网站做推广设计网站官网
  • 泉州pc网站开发百度搜索引擎网站
  • 网站建设价值成都爱站网seo站长查询工具
  • 怎样做ppt建网站西安网站建设方案优化
  • 品牌创建的六个步骤快速排名优化