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

网站顶部伸缩广告设计公司的网站详情

网站顶部伸缩广告,设计公司的网站详情,网站主页作品欣赏,怎样优化网站自然排名C 支持多态、继承和函数重载#xff0c;这些是面向对象编程#xff08;OOP#xff09;的基本概念。以下是这些概念的简要介绍#xff1a; 多态#xff08;Polymorphism#xff09;#xff1a; 多态是面向对象编程的核心概念之一#xff0c;它允许不同的子类对象对相同的…C 支持多态、继承和函数重载这些是面向对象编程OOP的基本概念。以下是这些概念的简要介绍 多态Polymorphism 多态是面向对象编程的核心概念之一它允许不同的子类对象对相同的方法做出不同的响应。C 支持两种多态编译时多态静态多态和运行时多态动态多态。编译时多态是通过函数重载实现的根据函数参数的类型或数量来确定调用哪个版本的函数。运行时多态是通过虚函数virtual function和继承实现的允许子类重写父类的虚函数并根据对象的实际类型来调用适当的函数。 继承Inheritance 继承是面向对象编程的另一个重要概念允许创建新类该类继承了现有类的属性和行为。C 支持单继承和多继承。单继承表示一个类只能从一个基类派生而多继承允许一个类从多个基类派生。派生类可以访问基类的公共和受保护成员可以重写虚函数或添加新的成员和方法。 函数重载Function Overloading 函数重载是一种编程技巧允许在同一个作用域内定义多个具有相同名称但不同参数列表的函数。C 根据函数参数的数量和类型来区分重载的函数。函数重载使代码更加灵活可以根据不同的参数来选择不同的函数实现。 #include iostreamclass Shape { public:virtual void draw() {std::cout Drawing a shape std::endl;} };class Circle : public Shape { public:void draw() override {std::cout Drawing a circle std::endl;} };class Square : public Shape { public:void draw() override {std::cout Drawing a square std::endl;} };void draw(Shape* shape) {shape-draw(); }int main() {Shape s;Circle c;Square sq;draw(s); // 调用基类的 drawdraw(c); // 调用派生类的 drawdraw(sq); // 调用派生类的 drawreturn 0; }在上面的示例中Shape 是基类Circle 和 Square 是派生类它们都重写了 draw 虚函数。在 main 函数中使用多态性来调用不同类型的对象的 draw 方法它会根据实际对象的类型来选择正确的函数实现。这是多态的一个示例同时还涵盖了继承和虚函数。 虚函数 的实现原理 虚函数的实现原理涉及到虚函数表Virtual Function Table通常缩写为 vtable和虚函数指针vptr。虚函数是实现多态Polymorphism的核心机制允许在运行时确定调用哪个函数而不是在编译时确定。 下面是虚函数的实现原理 虚函数表vtable 每个包含虚函数的类都有一个对应的虚函数表。虚函数表是一个特殊的数据结构包含了类中的虚函数的地址。虚函数表通常是一个数组每个元素对应一个虚函数。每个类的实例都包含一个指向其虚函数表的指针vptr。当类被实例化时vptr 会被初始化为指向正确的虚函数表。 虚函数指针vptr 每个类的实例中都包含一个虚函数指针vptr它指向该类的虚函数表。虚函数指针通常位于对象的内存布局中的开头位置以便快速访问。当调用一个虚函数时实际上是通过虚函数指针找到正确的虚函数表并从中获取要调用的函数的地址。 #include iostreamclass Base { public:virtual void print() {std::cout Base::print() std::endl;} };class Derived : public Base { public:void print() override {std::cout Derived::print() std::endl;} };int main() {Base* basePtr;Base baseObj;Derived derivedObj;basePtr baseObj; // 指向基类对象basePtr-print(); // 调用 Base::print()basePtr derivedObj; // 指向派生类对象basePtr-print(); // 调用 Derived::print()return 0; }继承的方法Method Overriding 继承的方法是指在派生类中重新定义重写基类的方法。继承的方法不依赖于关键字如 virtual而只是通过函数名和参数列表匹配来实现方法的重写。重写继承的方法不要求使用关键字 overrideC11及以后版本支持但强烈建议使用以提高代码可读性和可维护性。继承的方法允许子类提供自己的实现但不一定需要与基类方法相同的名称或参数列表。 class Base { public:void print() {std::cout Base::print() std::endl;} };class Derived : public Base { public:void print() override {std::cout Derived::print() std::endl;} };虚函数Virtual Function 虚函数是一种特殊的成员函数用关键字 virtual 声明。它是实现多态的关键因为它允许在运行时动态选择要调用的函数实现。基类中的虚函数可以被派生类重写然后通过指向基类的指针或引用来调用派生类的方法实现多态。虚函数通常用于实现多态而继承的方法可以是非虚函数。 class Base { public:virtual void print() {std::cout Base::print() std::endl;} };class Derived : public Base { public:void print() override {std::cout Derived::print() std::endl;} };虚函数中的重写 在 C 中子类中的虚函数不一定要被重写。虚函数的重写或覆盖是一种可选操作取决于子类的需求。以下是关于虚函数重写的一些要点 虚函数的重写 基类中的虚函数可以被子类重写以提供子类自己的实现。子类中的重写虚函数的名称、参数列表和返回类型必须与基类中的虚函数相同。这是 C 的函数签名匹配规则。 非重写虚函数 如果子类不重写基类中的虚函数子类将继承基类的虚函数实现。子类可以选择在需要时调用基类的虚函数实现或者完全替换它。 纯虚函数 基类可以声明纯虚函数它没有默认的实现而是在派生类中必须被重写。子类必须提供纯虚函数的实现否则它也将成为一个抽象类不能被实例化。 class Base { public:virtual void virtualFunction() 0; // 纯虚函数 };class Derived : public Base { public:void virtualFunction() override {// 重写纯虚函数} };虚函数重写和普通函数重写的区别 虚函数重写Virtual Function Override 虚函数是在基类中声明并标记为虚函数使用 virtual 关键字的成员函数。子类可以选择是否重写虚函数使用 override 关键字来明确表示重写但不是必须的。虚函数实现可以根据对象的实际类型在运行时进行动态绑定即调用适当的虚函数版本。这称为多态。通过基类指针或引用调用虚函数时实际调用的是对象的实际类型的虚函数版本。 class Base { public:virtual void print() {std::cout Base::print() std::endl;} };class Derived : public Base { public:void print() override {std::cout Derived::print() std::endl;} };Base* obj new Derived(); obj-print(); // 调用 Derived::print()多态行为普通函数重写Non-virtual Function Override 普通函数是在基类和子类中声明的非虚函数没有使用 virtual 关键字。子类中的普通函数可以与基类中的函数具有相同的名称和参数列表但不会自动触发多态行为。调用普通函数时只会根据引用或指针的类型来决定使用哪个函数版本不会动态绑定到对象的实际类型。 class Base { public:void print() {std::cout Base::print() std::endl;} };class Derived : public Base { public:void print() {std::cout Derived::print() std::endl;} };Base* obj new Derived(); obj-print(); // 调用 Base::print()没有多态行为总结 虚函数重写用于实现多态允许在运行时动态绑定到对象的实际类型实现灵活的方法调用。普通函数重写没有多态行为根据引用或指针的类型来确定使用哪个函数版本通常用于普通方法覆盖和重载。
http://www.pierceye.com/news/665382/

相关文章:

  • 兖州网站开发做一个中英文网站多少钱
  • wordpress怎么做网盘站好看的页面图片
  • 建设网站深圳罗湖安徽合肥做网站
  • 一级a做爰片免费网站下载网站快慢由什么决定
  • 网页设计与网站建设 郑州大学网络购物网站备案
  • 美观网站建设哪家好优化大师最新版下载
  • 外贸品牌网站制作wordpress 微信主题
  • 旅游网站开发需求分析网站的根目录的路径
  • easyUI网站开发docker wordpress mysql
  • dede手机网站模板下载黄冈做网站
  • 诸城网站建设葛小燕现在搜索引擎哪个比百度好用
  • 嘉兴做微网站多少钱注册网页需要多少钱
  • 论坛类网站设计大型网站系统解决方案
  • 网站建设中页面设计广告策划书籍
  • 云南省建设工程投标中心网站网页的制作步骤是什么
  • 保定网站设计概述更换动易网站模板的方法
  • 新手如何注册网站域名做 理财网站有哪些
  • 南宁快速建站模板企业网站的开发与应用
  • 网站运营适合什么样的人做企业宣传及介绍ppt
  • 怎么样网站开源小升初在线做试卷的网站
  • 中国建设银行章丘支行网站网站排版设计欣赏
  • 儿童摄影网站建设专业做网站制作自助建站系统
  • 注册做网站的公司有哪些wordpress 4.1 下载
  • 用ps做美食网站一个网站多少钱?
  • 网站建设 试题揭阳专业做网站公司
  • 手机上怎么创建自己的网站河南企业网站优化
  • 定陶区城乡和住房建设局网站新手怎么做网站
  • 工商银行与建设银行网站对比石嘴山网站seo
  • seo快速建站自学程序员的步骤
  • 做旅行网站的依据及意义如何制作自己想要的图片