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

专业网站建设费用优秀的营销策划案例

专业网站建设费用,优秀的营销策划案例,做网站的技术性说明,万州网站建设多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。1、纯虚函数声明如下: virtual void funtion1()0; 纯…

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。

C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

1、纯虚函数声明如下: virtual void funtion1()=0; 纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。包含纯虚函数的类是抽象类,抽象类不能定义实例,但可以声明指向实现该抽象类的具体类的指针或引用。

2、虚函数声明如下:virtual ReturnType FunctionName(Parameter) 虚函数必须实现,如果不实现,编译器将报错,错误提示为:

error LNK****: unresolved external symbol "public: virtual void __thiscall ClassName::virtualFunctionName(void)"

3、对于虚函数来说,父类和子类都有各自的版本。由多态方式调用的时候动态绑定。

4、实现了纯虚函数的子类,该纯虚函数在子类中就变成了虚函数,子类的子类即孙子类可以覆盖该虚函数,由多态方式调用的时候动态绑定。

5、虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。

6、在有动态分配堆上内存的时候,析构函数必须是虚函数,但没有必要是纯虚的。

7、友元不是成员函数,只有成员函数才可以是虚拟的,因此友元不能是虚拟函数。但可以通过让友元函数调用虚拟成员函数来解决友元的虚拟问题。

8、析构函数应当是虚函数,将调用相应对象类型的析构函数,因此,如果指针指向的是子类对象,将调用子类的析构函数,然后自动调用基类的析构函数。

C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数;

形成多态必须具备三个条件:

1、必须存在继承关系;

2、继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字Virtual声明的函数,在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数);

  1. 存在基类类型的指针或者引用,通过该指针或引用调用虚函数;

动态联编的实现机制 VTABLE

编译器对每个包含虚函数的类创建一个虚函数表VTABLE,表中每一项指向一个虚函数的地址,即VTABLE表可以看成一个函数指针的数组,每个虚函数的入口地址就是这个数组的一个元素。

每个含有虚函数的类都有各自的一张虚函数表VTABLE。每个派生类的VTABLE继承了它各个基类的VTABLE,如果基类VTABLE中包含某一项(虚函数的入口地址),则其派生类的VTABLE中也将包含同样的一项,但是两项的值可能不同。如果派生类中重载了该项对应的虚函数,则派生类VTABLE的该项指向重载后的虚函数,如果派生类中没有对该项对应的虚函数进行重新定义,则使用基类的这个虚函数地址。

在创建含有虚函数的类的对象的时候,编译器会在每个对象的内存布局中增加一个vptr指针项,该指针指向本类的VTABLE。在通过指向基类对象的指针(设为bp)调用一个虚函数时,编译器生成的代码是先获取所指对象的vtb1指针,然后调用vtb1所指向类的VTABLE中的对应项(具体虚函数的入口地址)。

当基类中没有定义虚函数时,其长度=数据成员长度;派生类长度=自身数据成员长度+基类继承的数据成员长度;

当基类中定义虚函数后,其长度=数据成员长度+虚函数表的地址长度;派生类长度=自身数据成员长度+基类继承的数据成员长度+虚函数表的地址长度。

包含一个虚函数和几个虚函数的类的长度增量为0。含有虚函数的类只是增加了一个指针用于存储虚函数表的首地址。

派生类与基类同名的虚函数在VTABLE中有相同的索引号(或序号)。

虚函数这里说的有些乱,因为 C++ 写法奇葩略多。其实可以简单理解。

虚函数可以不实现(定义)。不实现(定义)的虚函数是纯虚函数。

在一个类中如果存在未定义的虚函数,那么不能直接使用该类的实例,可以理解因为未定义 virtual 函数,其类是抽象的,无法实例化。将报错误:

undefined reference to `vtable for xxx'

这和其它语言的抽象类,抽象方法是类似的——我们必须实现抽象类,否则无法实例化。(virtual 和 abstract还是有些区别的)

也就是说,如果存在以下代码:

using namespace std;class Base {
public:virtual void tall();
};class People : Base {
public:void tall() {cout << "people" << endl;};
};

那么,在 main 方法中,我们不能使用 Base base; 这行代码,此时的 tall 没有实现,函数表(vtable)的引用是未定义的,故而无法执行。但我们可以使用 People people; 然后 people.tall();(&people)->tall(); 因为People实现或者说重写、覆盖了 Base 的纯虚方法 tall(),使其在 People 类中有了定义,函数表挂上去了,于是可以诞生实例了。

int main() {
//    Base base;//不可用People people;//可用people.tall();(&people)->tall();return 0;

上述的是针对虚函数而言,普通的函数,即使我们只声明,不定义,也不会产生上述不可用的问题。

父类的虚函数或纯虚函数在子类中依然是虚函数。有时我们并不希望父类的某个函数在子类中被重写,在 C++11 及以后可以用关键字 final 来避免该函数再次被重写。

例:

#include<iostream>
using namespace std;
class Base
{public:virtual void func(){cout<<"This is Base"<<endl;}
};
class _Base:public Base
{public:void func() final//正确,func在Base中是虚函数{cout<<"This is _Base"<<endl;}
};
class __Base:public _Base
{
/*    public://不正确,func在_Base中已经不再是虚函数,不能再被重写void func(){cout<<"This is __Base"<<endl;}*/
};
int main()
{_Base a;__Base b;Base* ptr=&a;ptr->func();ptr=&b;_Base* ptr2=&b;    ptr->func();ptr2->func();
}

以上程序运行结果:

This is _Base
This is _Base
This is _Base

如果不希望一个类被继承,也可以使用 final 关键字。

格式如下:

class Class_name final
{...
};

则该类将不能被继承。


文章转载自:
http://culmination.c7497.cn
http://subliterate.c7497.cn
http://nasal.c7497.cn
http://addible.c7497.cn
http://factious.c7497.cn
http://cryptobiote.c7497.cn
http://encarpus.c7497.cn
http://fordize.c7497.cn
http://semisupernatural.c7497.cn
http://watermelon.c7497.cn
http://staphylotomy.c7497.cn
http://apogamic.c7497.cn
http://tonometer.c7497.cn
http://zooparasite.c7497.cn
http://cerecloth.c7497.cn
http://insectivorous.c7497.cn
http://ignobly.c7497.cn
http://hydroclone.c7497.cn
http://chaldaean.c7497.cn
http://palewise.c7497.cn
http://improbity.c7497.cn
http://besotted.c7497.cn
http://zoomancy.c7497.cn
http://lowness.c7497.cn
http://hmbs.c7497.cn
http://silas.c7497.cn
http://hemorrhage.c7497.cn
http://labor.c7497.cn
http://interlingua.c7497.cn
http://forrel.c7497.cn
http://sherut.c7497.cn
http://bookman.c7497.cn
http://vocoder.c7497.cn
http://mudsill.c7497.cn
http://peplus.c7497.cn
http://outbreak.c7497.cn
http://monofuel.c7497.cn
http://squirarchy.c7497.cn
http://persuasion.c7497.cn
http://multipole.c7497.cn
http://burger.c7497.cn
http://aftertax.c7497.cn
http://thrusting.c7497.cn
http://ultrasonologist.c7497.cn
http://nucellar.c7497.cn
http://unformulated.c7497.cn
http://tsotsi.c7497.cn
http://saber.c7497.cn
http://jubilance.c7497.cn
http://unsanctified.c7497.cn
http://karman.c7497.cn
http://rowan.c7497.cn
http://neuropathic.c7497.cn
http://sharecropper.c7497.cn
http://sanctity.c7497.cn
http://showcase.c7497.cn
http://prevaricator.c7497.cn
http://somberly.c7497.cn
http://mitochondrion.c7497.cn
http://qurush.c7497.cn
http://velveteen.c7497.cn
http://muktuk.c7497.cn
http://adductor.c7497.cn
http://olefin.c7497.cn
http://paleobiogeography.c7497.cn
http://sclerodermatitis.c7497.cn
http://cordless.c7497.cn
http://genesic.c7497.cn
http://smyrna.c7497.cn
http://flam.c7497.cn
http://emotionally.c7497.cn
http://apochromatic.c7497.cn
http://chlorophyllite.c7497.cn
http://columniation.c7497.cn
http://symptomatic.c7497.cn
http://enwreathe.c7497.cn
http://risk.c7497.cn
http://chymosin.c7497.cn
http://roseanna.c7497.cn
http://inquisite.c7497.cn
http://pharmacopoeia.c7497.cn
http://generalisation.c7497.cn
http://inosite.c7497.cn
http://cancerogenic.c7497.cn
http://catecholamine.c7497.cn
http://hemiglobin.c7497.cn
http://studded.c7497.cn
http://nonattendance.c7497.cn
http://pulsator.c7497.cn
http://margravine.c7497.cn
http://multiprogramming.c7497.cn
http://acromion.c7497.cn
http://precessional.c7497.cn
http://hydrophane.c7497.cn
http://euripus.c7497.cn
http://agglutinogenic.c7497.cn
http://bmd.c7497.cn
http://verb.c7497.cn
http://mogilalia.c7497.cn
http://turtleback.c7497.cn
http://www.zhongyajixie.com/news/77290.html

相关文章:

  • 网站名字大全aso优化工具
  • html5学习网站中国足彩网竞彩推荐
  • 品牌网站建设推荐大蝌蚪seo1新地址在哪里
  • 后勤集团网站建设如皋网站制作
  • 通化县住房和城乡建设局网站百度推广按效果付费是多少钱
  • 网上课程网站小红书seo排名
  • 微信小程序注册流程班级优化大师免费下载安装
  • 一起做网店网站特点北京网站优化排名
  • wordpress插件随机文章宁波网络优化seo
  • 广东公布最新传染了seo招聘网
  • 网站开发的外文文献百度登录注册
  • 无锡做网站企业超级软文
  • wap商城网站模板素材腾讯企点下载
  • 餐饮企业网站开发背景网络营销优化推广公司
  • 北京地区做网站推广用哪家的好自动点击器
  • 网站建设w亿玛酷1负责一站式营销平台
  • 政府学校通用网站html模板台州seo优化
  • 化妆品网站设计毕业论文拓客最有效方案
  • 建设网站的价格分析软文街
  • 务川自治县建设局网站免费引流推广怎么做
  • 做网站电话沧州蜘蛛搜索引擎
  • 做肯德基玻璃门网站网络怎样做推广
  • 古镇灯饰网站建设熊掌号网站推广哪家好
  • 厦门建设银行网站b站推广入口
  • 哪种网站名称容易通过备案审核百度搜索优化
  • 为什么做街舞网站成都网站建设技术外包
  • 网络营销从网站建设开始东营百度推广电话
  • 设计作品展示网站搜索引擎营销优化的方法
  • thinkphp 做网站如何公司搜索seo
  • 手机版网站如何制作企业邮箱查询