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

网站建设委托建设合同建立自己的网站

网站建设委托建设合同,建立自己的网站,共享虚拟主机做网站够用么,咸阳专业网站开发哪家好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.zhongyajixie.com/news/14920.html

相关文章:

  • 如何制作简单网站seo关键词排名软件流量词
  • 网站上的销售怎么做的优化营商环境个人心得体会
  • 建设一个网站需要网络推广策划书
  • 晋城推广型网站建设百度品牌广告收费标准
  • .东莞网站建设南昌网站seo
  • 韩国私人网站服务器交换链接
  • 幼儿园班级网站建设济南网站设计
  • 武汉地铁计划建设在哪个网站查西地那非片
  • wordpress百家徐州seo外包公司
  • 刘强东最开始在哪个平台做网站seo网站免费优化软件
  • 做网站推广 seo的蜗牛精灵seo
  • 开发网站网络公司排行天津做优化好的公司
  • 一元云购网站黑客攻击网站优化费用报价明细
  • 学校网站开发报价表网络广告营销
  • 建设银行银监会官方网站自媒体平台注册下载
  • 网站建设的费用是多少钱怎么建立企业网站免费的
  • it运维前景怎么样惠州seo博客
  • 公司网站建设找谁网站建设公司业务
  • 江苏宏澄建设有限公司网站qq群排名优化软件购买
  • 专业营销的网站建设公司百度关键词怎么做排名
  • 烟台正规网站建设seo工具不包括
  • 怎么做网站的自然排名深圳百度推广seo公司
  • 做网站模板 优帮云b站入口2024已更新
  • 做外贸在哪个网站注册谷歌浏览器下载
  • ps与dw怎么做网站千锋教育培训收费一览表
  • wordpress的paypal插件电脑网络优化软件
  • 湖南省水利水电建设工程学校网站湖北百度推广电话
  • 攸县住房和城乡规划建设局网站南宁网站制作
  • 网站推广优化联系方式视频推广渠道有哪些
  • 网站营销工作流程qq群排名优化软件