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

象山县建设局网站中国互联网协会是做什么的

象山县建设局网站,中国互联网协会是做什么的,哈尔滨网站优化推广公司,雄安优秀网站建设电话1.多态 1.1多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多 态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时 多态(静态多态)…

1.多态

1.1多态的概念

多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多 态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时 多态(静态多态)主要就是我们前⾯讲的函数重载和函数模板,他们传不同类型的参数就可以调⽤不同的 函数,通过参数不同达到多种形态,之所以叫编译时多态,是因为他们实参传给形参的参数匹配是在 编译时完成的,我们把编译时⼀般归为静态,运⾏时归为动态。
运⾏时多态,具体点就是去完成某个⾏为(函数),可以传不同的对象就会完成不同的⾏为,就达到多种 形态。⽐如买票这个⾏为,当普通⼈买票时,是全价买票;学⽣买票时,是优惠买票(5折或7折);军 ⼈买票时是优先买票。再⽐如,同样是动物叫的⼀个⾏为(函数),传猫对象过去,就是”(>^ω^<) 喵“,传狗对象过去,就是"汪汪"。
2.多态的的定义和实现
多态是一个继承关系下的类对象,去调用同一函数,产生了不同的行为。
2.1.1 实现多态的必须两个重要条件
必须是基类的指针或者引⽤调⽤虚函数
被调⽤的函数必须是虚函数,并且完成了虚函数重写/覆盖
3虚函数
      
类函数成员前面加上virtual修饰这个函数就是虚函数。非成员函数不能加virtual修饰
class Person{public:virtual void BuyTicket() { cout << "买票-全价" << endl;}};

3.1.1虚函数的重写

虚函数的重写/覆盖:派⽣类中有⼀个跟基类完全相同的虚函数(即派⽣类虚函数与基类虚函数的返回值 类型、函数名字、参数列表完全相同),称派⽣类的虚函数重写了基类的虚函数。
注意:在重写基类虚函数时,派⽣类的虚函数在不加virtual关键字时,虽然也可以构成重写(因为继承 后基类的虚函数被继承下来了在派⽣类依旧保持虚函数属性),但是该种写法不是很规范,不建议这样 使⽤,不过在考试选择题中,经常会故意买这个坑,让你判断是否构成多态。
class Person {
public:
virtual void BuyTicket() { cout << "买票-全价" << endl; }
};
class Student : public Person {
public:
virtual void BuyTicket() { cout << "买票-打折" << endl; }
};
void Func(Person* ptr)
{
// 这⾥可以看到虽然都是Person指针Ptr在调⽤BuyTicket
// 但是跟ptr没关系,⽽是由ptr指向的对象决定的。
ptr->BuyTicket();
}
int main()
{
Person ps;
Student st;
Func(&ps);
Func(&st);
return 0;
}

4.析构函数的重写

基类的析构函数为虚函数,此时派⽣类析构函数只要定义,⽆论是否加virtual关键字,都与基类的析 构函数构成重写,虽然基类与派⽣类析构函数名字不同看起来不符合重写的规则,实际上编译器对析 构函数的名称做了特殊处理,编译后析构函数的名称统⼀处理成destructor,所以基类的析构函数加了 vialtual修饰,派⽣类的析构函数就构成重写。
下⾯的代码我们可以看到,如果~A(),不加virtual,那么delete p2时只调⽤的A的析构函数,没有调⽤ B的析构函数,就会导致内存泄漏问题,因为~B()中在释放资源。
class A
{
public:
virtual ~A()
{
cout << "~A()" << endl;
}
};
class B : public A {
public:
~B()
{
cout << "~B()->delete:"<<_p<< endl;
delete _p;
}
protected:
int* _p = new int[10];
};
// 只有派⽣类Student的析构函数重写了Person的析构函数,下⾯的delete对象调⽤析构函数,才能
构成多态,才能保证p1和p2指向的对象正确的调⽤析构函数。
int main()
{
A* p1 = new A;
A* p2 = new B;
delete p1;
delete p2;
return 0;
}

今天的多态就说到这里可能不是很全面有问题大家可以指出来谢谢大家

http://www.yayakq.cn/news/848983/

相关文章:

  • 企业网站开发丨薇标志在线设计网站
  • 简单扁平化风格后台网站模板手机微信登入网站
  • 农家乐网站模板wordpress 企业
  • 温州网站设计制作一个网站建设的目标
  • 沈阳网站建设公司怎么样贵阳网页设计
  • 网站平台建设模板怎么看网站是否被百度惩罚
  • 网站建设模拟实训题巨鹿县住房与城乡建设厅网站
  • 长春网站推广排名药品营销策划方案
  • 重庆网上房地产网站上海家装设计网站
  • 广州自助网站推广建站申请一个电子邮箱
  • 收录网站的二级域名网站建设网站管理
  • 东莞 手机网站制作南京一等一网络科技有限公司
  • 口碑营销泉州seo顾问
  • 接网站做项目赚钱吗wordpress中文下载方法
  • 济宁市城市建设局网站怎么看网站空间多大
  • flash个人网站首页模板wordpress 数据
  • wordpress友情链接推荐seo零基础视频教程
  • 男女直接做那个的视频网站东莞网站推广建设
  • 网站规划建设网站引导页是什么问题
  • 仿京东网站手机html编辑器哪个好
  • html5网站模板下载google网站增加关键词
  • 域名到期对网站的影响综合性门户网站列举
  • WordPress多站点开启多语言广告网站设计公司好吗
  • 阿里云建设网站流程千牛商家版网站建设
  • 嘉兴市南湖区建设局网站用模板搭建的网站备案吗
  • 电子系统设计网站贵阳做网站开发科技有限公司
  • 做网站 工商 非法经营h5响应式网站上海
  • 企业网站 漏洞网站建设怎么制作模板
  • 宣讲家网站官德修养与作风建设设计网站大全下载
  • 网站建设与设计公司可以做网站吗