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

吉林智能建站系统价格wordpress自动汉化版

吉林智能建站系统价格,wordpress自动汉化版,wordpress 音乐网,比百度好用的搜索软件抽象类是一种特殊的类#xff0c;它为一个类族提供统一的操作界面。抽象类是为了抽象和设计的目的而建立的。可以说#xff0c;建立抽象类#xff0c;就是为了通过它多态地使用其中的成员函数。抽象类处于类层次的上层#xff0c;一个抽象类自身无法实例化#xff0c;也就…抽象类是一种特殊的类它为一个类族提供统一的操作界面。抽象类是为了抽象和设计的目的而建立的。可以说建立抽象类就是为了通过它多态地使用其中的成员函数。抽象类处于类层次的上层一个抽象类自身无法实例化也就是说我们无法定义一个抽象类的对象只能提供继承机制生成抽象类的非抽象派生类然后再实例化。 1.纯虚函数 在基类中声明和不同的派生类中具有相同原型的函数并将它们声明为虚函数此时派生类中和基类中名字相同的函数就会被覆盖掉然后通过基类的指针调用这些函数时派生类的相应函数将被实际调用。然而基类并不知道该如何处理通过基类的指针调用来的派生类函数无法给出有意义的实现。对于这种在基类中无法实现的函数可以在基类中只说明函数原型来规定整个类族的统一接口形式而在派生类中再给出这些函数的实现纯虚函数来实现这一功能。 纯虚函数是一个在基类中声明的虚函数它在该基类中没有定义具体的操作内容要求各派生类根据实际需求给出各自的定义。 纯虚函数的声明格式为 virtual 函数类型 函数名(参数表)0;实际上它与一般虚函数成员的原型在书写格式上的不同就在于后面加了“0”。 声明为纯虚函数之后基类中就可以不再给出函数的实现部分。纯虚函数的函数体由派生类给出。 【注意】 1基类中仍然允许对纯虚函数给出实现但即使给出实现也必须由派生类覆盖否则无法实例化。例如 #includeiostream using namespace std;class B { public:virtual void fun() 0//纯虚函数在基类中实现{cout 显示基类B endl;} };class D :public B { public:virtual void fun() 0; };int main() {D d;d.fun();return 0; }以上代码编译错误原因是 将代码修改之后如下 class B { public:virtual void fun() 0//派生类对基类中的纯虚函数进行覆盖{cout 显示基类B endl;} };class D :public B { public:virtual void fun(){cout 显示派生类D endl;} };int main() {D d;d.fun();return 0; }运行结果 2在基类中对纯虚函数定义的函数体的调用必须通过“基类名::函数名参数表”的形式。 3如果将基类析构函数声明为纯虚函数必须给出它的实现因为派生类的析构函数体执行完后需要调用基类的纯虚函数。 class B { public:B(){cout 基类B的构造函数 endl;}virtual~B() 0//声明B类的析构函数为纯虚函数并实现{cout 基类B的析构函数 endl;}virtual void fun() 0;//声明fun为纯虚函数 };class D :public B { public:D(){cout 派生类D的构造函数 endl;}virtual ~D(){cout 派生类D的析构函数 endl;}virtual void fun(){cout 显示派生类D endl;} };int main() {D d;return 0; }运行结果 4纯虚函数不同于函数体为空的虚函数纯虚函数根本就没有函数体而空的虚函数的函数体为空纯虚函数所在的类是抽象类不能直接进行实例化而函数体为空的虚函数所在的类是可以实例化的。它们共同的特点是都可以派生出新的类然后在新的类中给出虚函数新的实现而且这种新的实现具有多态特征。 2.抽象类 带有纯虚函数的类是抽象类。 抽象类的主要作用是通过它为一个类族建立一个公共的接口使它们能够更有效地发挥多态特性。抽象类声明了一个类族派生类的共同接口而接口的完整实现即纯虚函数的函数体需要派生类自己定义。 抽象类派生出新的类之后如果派生类给出所有纯虚函数的函数实现这个派生类就可以自己定义对象因而不再是抽象类反之如果派生类没有给出全部纯虚函数的实现这时派生类仍然是一个抽象类。 抽象类不能实例化即不能定义一个抽象类的对象但是可以定义一个抽象类的指针和引用。通过指针和引用就可以指向并访问派生类的对象进而访问派生类的成员这种访问具有多态特征。 【例】抽象类举例 class A//基类A定义 { public:virtual void display()const 0;//声明为纯虚函数};class B :public A//公有派生类B定义 { public:virtual void display()const//覆盖基类的虚函数{cout 显示类B endl;} };class C :public B//公有派生类C定义 { public:virtual void display()const//覆盖基类的虚函数{cout 显示类C endl;} };void fun(A* p)//参数为指向基类A的对象的指针 {p-display();//对象指针-成员名 }int main() {B b;//定义直接基类为A类的派生类B的对象C c;//定义直接基类为B类的派生类C的对象fun(b);//用直接基类为A类的派生类B对象的指针调用fun函数fun(c);//用直接基类为B类的派生类C对象的指针调用fun函数return 0; }运行结果 分析 程序中类ABC属于同一个类族抽象类A通过纯虚函数为整个类族提供了通用的外部接口语义。通过公有派生而来的子类BC给出了纯虚函数的具体实现因此子类BC是非抽象类可以定义派生类的对象同时根据赋值兼容规则抽象类A的指针也可以指向任何一个派生类的对象。在fun函数中通过基类A的指针p就可以访问到p指向的派生类BC的对象成员。这样就实现了对同一类族中的对象进行统一处理的多态。 而且程序中派生类的虚函数可以不用virtual关键字显式说明因为它们与基类的纯虚函数具有相同的名称、参数及返回值由系统自动判断为虚函数。在派生类display函数原型声明中使用virtual也没有错的。
http://www.hkea.cn/news/14553703/

相关文章:

  • 网站开发属于购销合同百度网盟推广的定义
  • 市场部做网站工作职责微信投放广告多少钱
  • 个人网站做淘宝客违规金华网站建设优化技术
  • 常德网站制作网页展示模板
  • 怎么做网站教程 用的工具个人备案网站做企业会怎样
  • 网站开发与网站运营中国企业排行榜前十名
  • 网站上报名系统怎么做手机管理wordpress站
  • 网站个人备案做论坛当铺网站建设方案
  • 重庆主页网站建设怎么自己给自己的网站做推广
  • 做兼职打字员的网站做空比特币网站
  • 广告公司微网站建设织梦网站漏洞
  • 呼和浩特企业网站网站建设类电话销售
  • 网站域名验证深信服对单一网站做限速
  • 模板网站建设多少钱外贸网站建设专业
  • 服务号wordpress站长之家seo
  • 文字游戏做的最好的网站电商专业是做什么的
  • 电子技术支持 东莞网站建设陆良县住房和城乡建设局网站
  • 嘉峪关市网站建设设计网站关键词密度太高怎么处理
  • 广州模板建站哪家好做淘推广的网站
  • a做片手机免费网站有哪些iis网站权限配置
  • 手机网站做适配wordpress 红色主题
  • 网站的优化公司海南房地产网站
  • 潍坊高密网站建设北京建工博海建设有限公司网站
  • 校园网站建设的基本条件教育公司网站模板
  • 跨境电商官方网站建设网站程序授权码
  • 百度收录网站排名c .net 做网站
  • 自己房子做民宿挂什么网站网站模板定制
  • 做宣传手册的网站wordpress 后台去版权
  • 开封做网站哪家好郑州网站建设哪家好
  • asp网站建设中期报告wordpress二次主题