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

做jsp网站时怎么预览抖音seo源码搭建

做jsp网站时怎么预览,抖音seo源码搭建,国家企业公示信息查询系统,汽车公司网站建设c虚函数纯虚函数详解加代码解释 一.概念:二.虚函数示例及解析:三.纯虚函数示例及解析:四.验证和实际使用及解析:1.子类没有对父类的函数重载,mian()函数调用,是直接返回父类的值2.子类对父类的函数重载&…

c++虚函数纯虚函数详解加代码解释

  • 一.概念:
  • 二.虚函数示例及解析:
  • 三.纯虚函数示例及解析:
  • 四.验证和实际使用及解析:
    • 1.子类没有对父类的函数重载,mian()函数调用,是直接返回父类的值
    • 2.子类对父类的函数重载,mian()函数调用,是直接返回子类重载后的返回值
    • 3.子类对父类的函数重载,但子类调用自己函数,mian()函数调用时,报错,是因为,类的定义指向父类重新定义子类,父类中没有的子类也不能调用。
  • 五.总结:
  • 补充override关键字作用:

一.概念:

虚函数和纯虚函数是面向对象编程中的概念,用于实现多态性和抽象类特性。
虚函数(Virtual Function)是在基中声明的函数,通过在函数前面加上virtual关键字来标识。虚函数可以在派生类中被重写,实现函数的多态性。在运行时,根据对象的实际类型来确定调用哪个版本的虚函数。通过基类的指针或引用调用虚函数时,会根据指针或引用所指向的对象类型来调用相应的函数。
纯虚函数(Pure Virtual Function)是在基类中声明的没有实际实现的函数,通过在函数声明后面加上= 0来标识。纯虚函数用于定义接口,要求派生类必须实现函数。有了纯虚函数,基类就成为了抽象类,无法创建对象,只能作为其他类的基类来派生出新的类。
纯虚函数的作用是实现接口的统一和规范,确保派生类都实现了基类中定义的接口。纯虚函数可以在派类中重写,也可以不重写如果某个派类重写纯虚函数,那么该派生类也成为抽象类,无法创建对象。

二.虚函数示例及解析:

#include <iostream>
using namespace std;class Animal {
public:virtual void speak() {cout << "Animal speaks!" <<endl;}
};class Dog : public Animal {
public:void override() {cout << "Dog barks!" << endl;}
};class Cat : public Animal {
public:void speak() {cout<< "Cat meows!" << endl;}
};int main() {Animal* animal1 = new Dog();Animal* animal2 = new Cat();animal1->speak(); // 输出:Dog barks!animal2->speak(); // 输出:Cat meows!delete animal1;delete animal2;return 0;
}

在这里插入图片描述

虚函数是在基类中声明的具有虚函数特性的函数,通过在声明前加上键字virtual来标识。它允许在派生类中重写该函数,实现多态性。在运行时,根据对象的实际类型来确定调用哪个版本虚函数。
在上述中,Animal类是基类,其中的speak()函数被声明为虚Dog和Cat类是派生类,它们分别重写了speak()`函数。
在main()函数中,我们通过基类指针分别创建了Dog和Cat对象,并调用了speak()函数。由于speak()函数是虚函数,所以在运行时会根据对象的实际类型来确定调用哪个版本的函数因此,输出结果分别是"Dog barks!“和"Cat meows!”。

三.纯虚函数示例及解析:

#include <iostream>
using namespace std;class Shape {
public:virtual double getArea() = 0;
};class Rectangle : public Shape {
private:double length;double width;
public:Rectangle(double len, double wid) : length(len), width(wid) {}double getArea() override {cout << "Rectangle" << endl;return length*width;}
};class Square : public Shape {
private:double length;
public:Square(double len) : length(len){}double getArea() override {cout << "Square" << endl;return length * length;}
};class Circle : public Shape {
private:double radius;public:Circle(double r) : radius(r){}double getArea() override {cout << "Circle" << endl;return 3.14 * radius * radius;}
};int main() {Shape* shape1 = new Rectangle(5, 4);Shape* shape2 = new Circle(3);Shape* shape3 = new Square(5);cout << "Area of rectangle: " << shape1->getArea() << endl;cout << "Area of circle: " << shape2->getArea() << endl;cout << "Area of square:" << shape3->getArea() << endl;delete shape1;delete shape2;delete shape3;return 0;
}

在这里插入图片描述

纯虚函数是在基类中声明的没有实际实现的函数,通过函数声明后加上= 0来标识。它用于定义接口求派生类必须实现该函数。
在上述代码中,Shape类是基类,其中的getArea()函数被声明为纯虚函数。Rectangle``Circle类是派生类,它们必须实现getArea()函数。
在main()函数中,我们通过基类指针分别创建了Rectangle和Circle,并调用了getArea()函数。由于getArea()函数是纯虚函数,所以基类Shape无法创建对象,只能通过派生类来实现具体的功能因此,输出结果分别是矩形的面积和圆的面。

四.验证和实际使用及解析:

1.子类没有对父类的函数重载,mian()函数调用,是直接返回父类的值

#include <iostream>
using namespace std;class Shape {
public:virtual double getArea() = 0;virtual double getperimeter() {cout << "demo test" << endl;return 5;};
};class Rectangle : public Shape {
private:double length;double width;
public:Rectangle(double len, double wid) : length(len), width(wid) {}double getArea() override {cout << "Rectangle" << endl;return length * width;}
};int main() {Shape* shape1 = new Rectangle(5, 4);cout << "Area of rectangle: " << shape1->getArea() << endl;cout << "getperimeter of rectangle: " << shape1->getperimeter() << endl;delete shape1;return 0;
}

在这里插入图片描述

2.子类对父类的函数重载,mian()函数调用,是直接返回子类重载后的返回值

#include <iostream>
using namespace std;class Shape {
public:virtual double getArea() = 0;virtual double getperimeter() {cout << "demo test" << endl;return 5;};
};class Rectangle : public Shape {
private:double length;double width;
public:Rectangle(double len, double wid) : length(len), width(wid) {}double getArea() override {cout << "Rectangle" << endl;return length * width;}double getperimeter(){cout <<"getperimeter:getperimeter" << endl;return length * 2 + width * 2;}
};int main() {Shape* shape1 = new Rectangle(5, 4);cout << "Area of rectangle: " << shape1->getArea() << endl;cout << "getperimeter of rectangle: " << shape1->getperimeter() << endl;delete shape1;return 0;
}

在这里插入图片描述

3.子类对父类的函数重载,但子类调用自己函数,mian()函数调用时,报错,是因为,类的定义指向父类重新定义子类,父类中没有的子类也不能调用。

将:Shape* shape1 = new Rectangle(5, 4);
修改为:Rectangle* shape1 = new Rectangle(5, 4);

我们才能调用子类中父类没有定义的函数

#include <iostream>
using namespace std;class Shape {
public:virtual double getArea() = 0;
};class Rectangle : public Shape {
private:double length;double width;
public:Rectangle(double len, double wid) : length(len), width(wid) {}double getArea() override {cout << "Rectangle" << endl;return length * width;}double getperimeter(){cout <<"getperimeter:getperimeter" << endl;return length * 2 + width * 2;}
};int main() {Rectangle* shape1 = new Rectangle(5, 4);cout << "Area of rectangle: " << shape1->getArea() << endl;cout << "getperimeter of rectangle: " << shape1->getperimeter() << endl;delete shape1;return 0;
}

在这里插入图片描述

五.总结:

虚函数用于实现多性,允许在派生类中重写基类的函数。
纯虚函数用于定义接口,要求派生必须实现函数,可以在派生类中重写或不重写。

补充override关键字作用:

如果派生类在虚函数声明时使用了override描述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译

http://www.hkea.cn/news/870890/

相关文章:

  • 广西建设质监站官方网站站长工具seo综合查询可以访问
  • 通用搭建网站教程优化营商环境的意义
  • 网站中加入地图怎样优化网站排名
  • 网站如何被搜索引擎收录地推推广平台
  • 池州做网站公司游戏搜索风云榜
  • 东丽区做网站网站查询平台
  • wordpress什么主题好用seo优化范畴
  • 局域网端口映射做网站西安竞价托管代运营
  • 重庆网站建设设计公司信息ip网站查询服务器
  • 网站积分的作用seo搜索引擎优化就业前景
  • 珠海网站品牌设计公司简介最新国内新闻重大事件
  • 广东专业网站客服软件定制站长统计app下载大全
  • 广东网站建设公司排名磁力帝
  • 胶南网站建设哪家好成都电脑培训班零基础
  • 集团网站建设哪家好网上推广怎么弄?
  • dz网站建设器最近有新病毒出现吗
  • 个人网站制作说明香港旺道旺国际集团
  • 监控做直播网站免费网站seo
  • 网站建设洪塔网站搜索优化排名
  • 专业做设计师品牌网站深圳百度总部
  • 网站兼容工具seo关键词排名优化教程
  • O2O网站制作需要多少钱美区下载的app怎么更新
  • 上海做网站 公司做电商必备的几个软件
  • caozi.com网站建设中百度指数如何分析数据
  • 互联网舆情处置公司武汉seo外包平台
  • 消防器材网站建设背景seo工作职位
  • 专业网站制作公司名称seo咨询茂名
  • 做b2c网站建网站seo
  • 代理注册香港公司seo技术交流论坛
  • 想要提高网站排名应该怎么做seo网站推广费用