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

怎么自己搭建一个网站什么是网络营销与直播电商

怎么自己搭建一个网站,什么是网络营销与直播电商,青海省网站建设哪家公司比较靠谱,广告文案的100案例💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 C/C | 每日一练 (2)题目参考答案封装继承多态虚函数底…

💢欢迎来到张胤尘的技术站
💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥

文章目录

  • C/C++ | 每日一练 (2)
    • 题目
    • 参考答案
      • 封装
      • 继承
      • 多态
        • 虚函数
        • 底层实现
          • 单继承
          • 多继承
        • 注意事项

C/C++ | 每日一练 (2)

题目

简述 c++ 面向对象的三大特性。

参考答案

面向对象三大特性:封装、继承、多态。

封装

封装指的是将对象的行为和属性结合成为一个类,并隐藏对象的内部实现细节,仅通过对象的接口(即公开的方法)与外界交互。

  • 隐藏内部实现细节:保护对象的内部状态,防止外部直接访问或修改对象的私有成员。
  • 提供统一的接口:通过公开的方法(如构造函数、成员函数等)对外提供服务,使对象的使用更加安全和方便。

例如:

#include <iostream>class Person
{
private:// 私有成员,外部无法直接访问std::string name;int age;public:// 提供接口访问私有成员void setName(const std::string &newName){name = newName;}void setAge(int newAge){age = newAge;}void display() const{std::cout << name << " is " << age << " years old." << std::endl;}
};

继承

继承是指一个类(派生类或子类)可以继承另一个类(基类或父类)的属性和方法。子类可以扩展或修改父类的功能,而无需重新编写相同的代码,支持代码重用和扩展。继承可以是单继承或多继承(在 c++ 中支持)

继承的主要作用是:

  • 代码复用:减少重复代码,提高开发效率。
  • 拓展功能:派生类可以在继承基类的基础上,添加新的功能或修改现有功能。
#include <iostream>class Animal
{
public:void eat(){std::cout << "animal eat" << std::endl;}
};class Dog : public Animal
{
public:void bark(){std::cout << "dog eat" << std::endl;}
};

多态

多态是指相同的接口在不同的类实例上具有不同的表现形式。多态分为:

  • 编译时多态(函数重载和运算符重载)

  • 运行时多态(通过虚函数实现)。

运行时多态是面向对象编程中最重要的多态形式,它通过虚函数和继承实现。

例如:

#include <iostream>class Shape
{
public:// 定义为虚函数virtual void draw() const{std::cout << "drawing a shape" << std::endl;}
};class Circle : public Shape
{
public:// 重写基类的虚函数void draw() const override{std::cout << "drawing a circle" << std::endl;}
};class Square : public Shape
{
public:// 重写基类的虚函数void draw() const override{std::cout << "drawing a square" << std::endl;}
};int main()
{Shape *s1 = new Circle();Shape *s2 = new Square();s1->draw(); // drawing a circles2->draw(); // drawing a squaredelete s1;delete s2;
}
虚函数

c++ 中,虚函数是实现运行时多态的关键机制。它允许派生类重写继承自基类的成员函数,从而在运行时根据对象的实际类型调用相应的函数实现。

虚函数是在基类中通过关键字 virtual 声明的成员函数。它的作用是让派生类可以覆盖该函数,从而实现多态行为。

#include <iostream>class Base {
public:virtual void display() { std::cout << "Base::display()" << std::endl;}
}

虚函数的主要作用是实现 动态绑定或运行时多态。具体来说:

  • 当通过基类指针或引用调用虚函数时,程序会根据对象的实际类型(派生类类型)来调用对应的函数实现。
  • 如果没有虚函数,调用的将是基类的成员函数,而不是派生类的实现,这种行为称为静态绑定
#include <iostream>class Base {
public:virtual void display() {std::cout << "Base::display()" << std::endl;}
};class Derived : public Base {
public:// 重写基类的虚函数void display() override {std::cout << "Derived::display()" << std::endl;}
};int main() {Base* ptr = new Derived();delete ptr;return 0;
}

在上述代码中,ptr 是基类指针指向子类对象,由于 display() 是虚函数,程序会调用派生类的 display() 的实现。

底层实现

虚函数的实现依赖于虚表(简称 vtable)和虚表指针vptr):

  • 每个包含虚函数的类都有一个虚表(vtable),虚表中存储了该类中所有虚函数的地址。
  • 每个对象在对象头中会隐式地包含一个虚表指针(vptr),指向其所属类的虚表。
  • 当通过基类指针或引用调用虚函数时,程序会通过 vptr 查找虚表,然后在虚表中根据函数索引找到正确的函数地址。
  • 执行函数调用。
单继承

单继承的动态多态结构图如下所示:

在这里插入图片描述

多继承

多继承是 c++ 中的一种继承方式,它允许一个子类从多个基类继承属性和行为。这种继承方式可以提供更大的灵活性,使得派生类能够组合多个基类的特性。但是,多继承也引入了复杂性,尤其是在内存布局、虚函数表、构造和析构顺序等方面。多继承的动态多态结构图如下所示:

#include <iostream>class Base1
{
public:virtual void display(){std::cout << "Base1::display()" << std::endl;}virtual void show(){std::cout << "Base1::show()" << std::endl;}virtual ~Base1(){std::cout << "Base1::~Base1()" << std::endl;}private:int a;int b;
};class Base2
{
public:virtual void cat(){std::cout << "Base2::cat()" << std::endl;}virtual ~Base2(){std::cout << "Base2::~Base2()" << std::endl;}private:int c;
};class Derived : public Base1, public Base2
{
public:// 重写基类的虚函数void display() override{std::cout << "Derived::display()" << std::endl;}void cat() override{std::cout << "Derived::cat()" << std::endl;}~Derived() override {std::cout << "Derived::~Derived" << std::endl;}
private:int d;
};int main() {Base1* ptr1 = new Derived();Base2* ptr2 = new Derived();delete ptr1;delete ptr2;return 0;
}

在这里插入图片描述

注意事项
  • 虚函数必须是成员函数:全局函数或静态成员函数不能声明为虚函数。
  • 派生类的覆盖函数必须与基类的虚函数具有相同的签名(函数名、参数类型和数量)。如果派生类的函数与基类虚函数签名不一致(函数名相同,参数类型和数量不相同),则不会覆盖而是隐藏。
  • 纯虚函数:在基类中,可以将虚函数声明为纯虚函数,即在声明时赋值为 = 0。包含纯虚函数的类称为抽象类,不能实例化对象。
class AbstractClass {
public:virtual void func() = 0;  // 纯虚函数
};
  • 析构函数的虚化:如果基类有虚函数,通常需要将析构函数声明为虚函数,以确保通过基类指针删除派生类对象时,能够正确调用派生类的析构函数。
class Base {
public:virtual ~Base() { cout << "Base destructor" << endl; }
};class Derived : public Base {
public:~Derived() { cout << "Derived destructor" << endl; }
};
  • 虚函数的实现依赖于虚表和虚表指针,因此会带来一定的性能开销;每个对象需要存储一个虚表指针(通常为 4 字节或 8 字节)。
  • 动态多态在调用虚函数时需要通过虚表查找函数地址,这比直接调用非虚函数稍慢。但是这种开销通常是可以接受的,特别是在需要多态的场景中。

🌺🌺🌺撒花!

如果本文对你有帮助,就点关注或者留个👍
如果您有任何技术问题或者需要更多其他的内容,请随时向我提问。

在这里插入图片描述


文章转载自:
http://doughtily.c7493.cn
http://epistropheus.c7493.cn
http://redhead.c7493.cn
http://browny.c7493.cn
http://terrified.c7493.cn
http://retrojection.c7493.cn
http://serotherapy.c7493.cn
http://exceptant.c7493.cn
http://semihoral.c7493.cn
http://guttulate.c7493.cn
http://seacoast.c7493.cn
http://impressively.c7493.cn
http://indecomposable.c7493.cn
http://hydrosulphuric.c7493.cn
http://naziritism.c7493.cn
http://eris.c7493.cn
http://piggery.c7493.cn
http://fugleman.c7493.cn
http://guestly.c7493.cn
http://unmechanized.c7493.cn
http://katrine.c7493.cn
http://rachiodont.c7493.cn
http://appanage.c7493.cn
http://florescent.c7493.cn
http://spr.c7493.cn
http://hypocrisy.c7493.cn
http://thoughtless.c7493.cn
http://priestless.c7493.cn
http://libeler.c7493.cn
http://laminar.c7493.cn
http://possibilistic.c7493.cn
http://marl.c7493.cn
http://bristling.c7493.cn
http://peking.c7493.cn
http://inquilinism.c7493.cn
http://zanyism.c7493.cn
http://fhwa.c7493.cn
http://incest.c7493.cn
http://reanimate.c7493.cn
http://enhydrite.c7493.cn
http://docking.c7493.cn
http://correct.c7493.cn
http://conchita.c7493.cn
http://nociassociation.c7493.cn
http://thole.c7493.cn
http://fermion.c7493.cn
http://avalement.c7493.cn
http://shill.c7493.cn
http://concealment.c7493.cn
http://decimalist.c7493.cn
http://alborg.c7493.cn
http://global.c7493.cn
http://pard.c7493.cn
http://mae.c7493.cn
http://nfl.c7493.cn
http://beachfront.c7493.cn
http://pineal.c7493.cn
http://tergum.c7493.cn
http://thermonuclear.c7493.cn
http://biocompatible.c7493.cn
http://phenetidine.c7493.cn
http://fancywork.c7493.cn
http://cheapo.c7493.cn
http://choriocarcinoma.c7493.cn
http://bicycler.c7493.cn
http://thammuz.c7493.cn
http://teetotaler.c7493.cn
http://resterilize.c7493.cn
http://depasturage.c7493.cn
http://existent.c7493.cn
http://trior.c7493.cn
http://angiopathy.c7493.cn
http://insularity.c7493.cn
http://ridgeplate.c7493.cn
http://trophallaxis.c7493.cn
http://leptocephalic.c7493.cn
http://fructan.c7493.cn
http://cannoneer.c7493.cn
http://sinapin.c7493.cn
http://cynology.c7493.cn
http://antipyrine.c7493.cn
http://tracheitis.c7493.cn
http://reorientation.c7493.cn
http://madarosis.c7493.cn
http://whist.c7493.cn
http://subnuclear.c7493.cn
http://eliminant.c7493.cn
http://robotistic.c7493.cn
http://whoso.c7493.cn
http://inthral.c7493.cn
http://slinkskin.c7493.cn
http://obsequial.c7493.cn
http://manna.c7493.cn
http://unforced.c7493.cn
http://glisten.c7493.cn
http://feazings.c7493.cn
http://olefin.c7493.cn
http://unfirm.c7493.cn
http://problemist.c7493.cn
http://logania.c7493.cn
http://www.zhongyajixie.com/news/76508.html

相关文章:

  • 主页网站建设seo优化推广技巧
  • jsp鲜花网站开发源代码青岛网站建设哪家好
  • 昆山网站建设哪家便宜百度关键词搜索引擎
  • 玉林城乡住房建设厅网站世界最新新闻
  • wordpress开发人力资源电脑优化软件排行榜
  • o2o网站建设公司营销顾问
  • 亚马逊周末可以视频认证吗seo美式
  • 什么是网站建设需求分析什么是网络推广工作
  • 做文案策划有些网站可看网络推广app
  • 辽宁建设工程信息网官网查不良行为唐山seo推广公司
  • 北海网站建设关键词怎么做快速的有排名
  • 成都网站建设的公司百度seo整站优化
  • 西宁网站设计seo优化网站词
  • 网站建设越来越难做百度下载免费安装
  • 茶山网站仿做成都网站seo设计
  • 厦门建公司网站seo和sem的关系
  • php二次网站开发步骤天津百度快速排名优化
  • 网站建设推广招代理加盟太原好的网站制作排名
  • 去菲律宾做网站如何提高网站排名seo
  • 个人网站 前置审批创建自己的网站
  • 做学校网站的内容广告联盟平台
  • 南宁网站制作建设seo必备软件
  • 建立独立域名的网站怎样才算是自己的调研报告万能模板
  • 手机与pc的网站开发优化大师怎么强力卸载
  • 做门户网站怎么赚钱b2b免费发布网站大全
  • asp.net网站开发案例免费获客平台
  • 建网站可以卖钱seo的方式包括
  • 怎么做网站的主页面朋友圈推广怎么收费
  • 赵朴初网站建设品牌营销推广要怎么做
  • 中山市做网站专业的网络宣传渠道有哪些