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

广州建设手机网站重庆门户网站排名

广州建设手机网站,重庆门户网站排名,培训网站建设平台,浙江省建筑信息港官网文章目录 1. 什么是虚函数2. 虚函数与非虚函数的区别3. 派生类中的虚函数4. 构造/析构函数可以是虚函数吗#xff1f;5. 纯虚函数5.1 纯虚函数的定义5.1 纯虚函数的特定 1. 什么是虚函数 C 对象有三大特性#xff1a;继承、封装、多态#xff1b;虚函数就是实现多态的一种方… 文章目录 1. 什么是虚函数2. 虚函数与非虚函数的区别3. 派生类中的虚函数4. 构造/析构函数可以是虚函数吗5. 纯虚函数5.1 纯虚函数的定义5.1 纯虚函数的特定 1. 什么是虚函数 C 对象有三大特性继承、封装、多态虚函数就是实现多态的一种方式。 虚函数是指加了 virtual 修饰词的类的成员函数但 virtual 关键字并非强制必须要有的。 对于某些函数当基类希望派生类重新定义合适自己的版本时基类就把这些函数声明为虚函数 以下是一个虚函数的简单定义 class Animal { public:virtual void makeSound() {std::cout Animal makes a sound std::endl;} };注意virtual 关键字只能出现在类内部的函数声明中不能用于类外部的函数定义。 2. 虚函数与非虚函数的区别 在 C 中基类必须将它的两种成员函数区分开 基类希望直接继承给派生类而不需要改写的函数。静态绑定即解析过程发生在编译而非运行时基类希望派生类进行覆盖的函数定义为虚函数。动态绑定即根据对象类型不同调用该虚函数时可能执行基类的版本也可能执行某个派生类的版本因此需要在程序运行时确定。 3. 派生类中的虚函数 由于只有在程序运行时才知道调用哪个版本的虚函数因此所有虚函数都必须有定义就是不使用虚函数也必须定义它。 基类定义的虚函数在所有派生类中都是虚函数 C11 允许派生类使用 override 关键字显式地注明哪个成员函数是改写的基类的虚函数代码示例如下 class Animal {virtual void makeSound() {std::cout Animal makes a sound. std::endl;} };class Dog :public Animal {void makeSound() override {std::cout Dog makes a sound. std::endl;} };完整代码示例如下 #include iostreamclass Animal { private:int nums; public:Animal() default;Animal(int nums_) : nums(nums_) {};virtual void printNum() {std::cout The number of animals is: nums std::endl;} };class Dog :public Animal { private:int nums; public:Dog() default;Dog(int nums_) : nums(nums_) {};void printNum() override {std::cout The number of dog is: nums std::endl;} };int main(){Animal animal(100);animal.printNum(); // The number of animals is: 100Dog dog(5);dog.printNum(); // The number of dog is: 5return 0; }4. 构造/析构函数可以是虚函数吗 答案 构造函数不能是虚函数析构函数可以是虚函数且最好设置为虚函数 1构造函数不可以是虚函数 构造函数是在创建对象时执行的而虚函数是程序运行时执行的也就是说在创建对象时虚函数还没确定用那个版本呢所以构造函数不可以是虚函数。 2析构函数可以是虚函数且最好写成虚函数 如果析构函数不是虚函数则容易造成内存泄露。原因为 若有父类指针指向子类对象存在需要析构的是子类对象但父类析构函数不是虚函数则只析构了父类造成子类对象没有及时释放引起内存泄漏。 5. 纯虚函数 5.1 纯虚函数的定义 虚函数与纯虚函数的区别如下 虚函数子类可以也可以不重新定义基类的虚函数在基类中定义为 virtual void func() {}纯虚函数子类必须提供纯虚函数的个性化实现在基类中定义为 virtual void func() 0 {} 或 virtual void func() const 0 {} 以下是一个纯虚函数的简单定义声明 class Animal { public:virtual void makeSound() 0 {} };5.1 纯虚函数的特定 1含有纯虚函数的类称为抽象类抽象类不能被实例化。 与纯虚函数不同的是包含虚函数的类可以被实例化。 如下面的代码中对 Animal 抽象类的实例化会编译报错。 #include iostreamclass Animal {// 这里的 0 没有任何实际意义只起形式上的作用告诉编译系统这是纯虚函数virtual void makeSound() 0{} };int main(){Animal animal(); // 报错不能实例化抽象类return 0; }2纯虚函数只需要声明不需要定义。 因为纯虚函数一定会被重新所以在基类中声明即可不需要定义。
http://www.hkea.cn/news/14566636/

相关文章:

  • 建设银行预约纪念钞网站甘肃兰州今天的最新消息
  • 网站开发 h5网络维护公司经营范围
  • 北京网站制作排名谷歌浏览器安卓下载
  • 做招聘网站的怎么让人注册简历网站导航栏原型图怎么做
  • 家乡ppt模板免费下载网站凡科代理建站登录
  • Wordpress 新建标签外贸网站建设平台优化营销推广
  • 网站开发顶岗实习报告outstock. wordpress
  • 做网站的如何说服客户四川省工程造价总站官网
  • 免费信息网站建设平台谷歌外贸平台有哪些
  • 上线了建站怎么收费wordpress调用一篇
  • 建设网站的需求分析免费的网站cms
  • 域名服务器怎么设置网络优化工资一般多少
  • 17网站一起做网店打不开江阴网站设计哪家好
  • p2p网站数据分析怎么做建设春风摩托车官方网站
  • 怎么用word做网站网页设计图片比例
  • 石景山网站建设设计公司济南网站建设 选搜点o
  • 上海网站设计流程精准营销服务
  • 东莞热的建设网站青岛互联网平台公司
  • 网站建设一般多少钱官网办公室平面设计图
  • 亚马逊购物网站手机之家中关村在线
  • 微信小程序如何申请seo公司是干嘛的
  • 常营网站建设公司长治怎么做平台软件
  • 浦口区网站建设如何进入网站后台管理网站
  • 资源网站不好找了国家工商信息公示系统
  • 企业网站建设的原则县城做网站
  • 网站建设五站合一做ghost系统的网站有哪些
  • 东莞网站建设业务的公司js博客网站开发计划书
  • 做类似淘宝的网站做棋牌网站
  • 商业网站 模板门户网站asp源码
  • 无锡企业如何建网站前端开发好学吗