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

C++类和对象总结

目录

总结

一、引言

二、类的定义

三、对象的创建与初始化

四、访问控制

五、封装

六、继承

七、多态

八、其他特性

九、总结

C++类的定义

C++对象的创建和初始化

C++类的访问控制


总结

一、引言

C++是一种面向对象的编程语言,其核心概念是类和对象。类是对现实世界中具有共同特征的事物的抽象描述,而对象则是类的具体实例。通过类和对象,C++实现了数据抽象、封装、继承和多态等特性,使得代码更加模块化、可重用和易于维护。

二、类的定义

类是一种用户自定义的数据类型,用于描述具有相同属性和行为的对象的集合。类由成员变量(属性)和成员函数(方法)组成。成员变量用于存储对象的状态信息,而成员函数则用于实现对象的行为。

类的定义通常使用class关键字,后面跟类名,以及一对大括号{}。在大括号内部,可以定义类的成员变量和成员函数。成员变量可以是任何数据类型,包括基本数据类型、指针、数组、引用等。成员函数可以是普通函数、构造函数、析构函数、拷贝构造函数、赋值运算符重载函数等。

三、对象的创建与初始化

对象是类的具体实例,具有类的所有属性和行为。在C++中,可以通过类名和对象名来创建对象,并使用构造函数进行初始化。构造函数是一种特殊的成员函数,用于在创建对象时初始化对象的状态。

除了使用构造函数进行初始化外,还可以使用初始化列表来初始化成员变量。初始化列表在构造函数体之前执行,并且按照成员变量在类中声明的顺序进行初始化。

四、访问控制

C++提供了三种访问控制修饰符:public、protected和private。这些修饰符用于控制类成员的访问权限。public成员可以在任何地方被访问,protected成员只能在类的成员函数和派生类中被访问,而private成员只能在类的成员函数中被访问。

五、封装

封装是面向对象编程的一个重要特性,它通过将数据和操作封装到一个类中来实现。封装可以隐藏对象的内部实现细节,只暴露必要的接口给外部使用。这有助于提高代码的安全性和可维护性。

在C++中,可以通过将成员变量设置为private或protected来实现封装。然后,通过提供公共的成员函数(如getter和setter函数)来访问和修改这些成员变量的值。

六、继承

继承是面向对象编程的另一个重要特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和行为。通过继承,子类可以重用父类的代码,并实现自己的特定功能。

在C++中,继承通过冒号(:)和访问修饰符(通常是public)来表示。子类可以访问父类的public和protected成员,但不能直接访问private成员。子类可以添加新的成员变量和成员函数,也可以重写父类的成员函数(通过函数覆盖)。

七、多态

多态是面向对象编程的又一重要特性,它允许不同的对象对同一消息做出不同的响应。在C++中,多态通过虚函数和纯虚函数来实现。虚函数是一种可以在派生类中被重写的函数,而纯虚函数则是一种没有实现的虚函数。

通过多态性,我们可以实现代码的灵活性和可扩展性。例如,我们可以定义一个基类指针或引用,然后将其指向不同的派生类对象。当调用基类指针或引用所指向的对象的成员函数时,将根据对象的实际类型来调用相应的函数版本(即动态绑定)。

八、其他特性

除了上述特性外,C++类和对象还支持其他一些特性,如友元函数、静态成员、运算符重载等。这些特性进一步丰富了C++面向对象编程的表达能力。

九、总结

C++类和对象是面向对象编程的核心概念之一。通过类和对象,我们可以实现数据抽象、封装、继承和多态等特性,从而编写出更加模块化、可重用和易于维护的代码。在实际开发中,我们应该充分利用这些特性来提高代码的质量和效率。

C++类的定义

C++中的类(Class)是面向对象编程(OOP)的核心概念之一。类是对一组具有相同属性和行为的对象的抽象描述。下面是一个简单的C++类的定义示例:

#include <iostream>
#include <string>// 定义一个名为Person的类
class Person {
public: // 公共访问修饰符// 构造函数Person(const std::string& name, int age): name_(name), age_(age) {}// 析构函数(如果需要的话)~Person() {}// 成员函数(方法)void display() const {std::cout << "Name: " << name_ << ", Age: " << age_ << std::endl;}// 获取器(getter)std::string getName() const {return name_;}// 设置器(setter)void setAge(int age) {if (age >= 0) { // 假设年龄不能是负数age_ = age;}}private: // 私有访问修饰符// 成员变量(属性)std::string name_; // 名字int age_; // 年龄
};int main() {// 创建Person类的对象Person person("Alice", 30);// 调用成员函数person.display(); // 输出:Name: Alice, Age: 30// 调用设置器修改对象的属性person.setAge(31);// 再次调用成员函数查看修改后的结果person.display(); // 输出:Name: Alice, Age: 31return 0;
}


在上面的例子中,我们定义了一个名为Person的类,它包含:

公共部分(public):这部分包含类的成员函数和可以被外部访问的成员变量(尽管在良好的实践中,成员变量通常被声明为私有的)。在这个例子中,我们有一个构造函数、一个析构函数(尽管在这个简单的例子中它并未做实际的工作)、一个display成员函数用于显示人的信息,以及两个getter和setter函数用于访问和修改年龄。
私有部分(private):这部分包含类的私有成员变量。在这个例子中,我们有两个私有成员变量:name_和age_,它们分别用于存储人的名字和年龄。

类的成员函数(如构造函数、析构函数、display、getName和setAge)定义了类的对象可以执行的操作。成员变量(如name_和age_)则存储了对象的状态信息。

在main函数中,我们创建了一个Person类的对象person,并通过调用其成员函数来操作该对象。注意,由于name_成员变量是私有的,我们不能直接访问它,但可以通过getName成员函数来获取它的值。类似地,我们不能直接设置age_的值,但可以通过setAge成员函数来修改它。这种封装机制使得我们可以更好地控制对对象内部状态的访问和修改,从而提高了代码的安全性和可维护性。

C++对象的创建和初始化

在C++中,对象的创建和初始化是通过构造函数(constructor)来完成的。构造函数是一种特殊的成员函数,它用于初始化类的对象。当创建类的对象时,构造函数会自动被调用。

下面是一个关于C++对象创建和初始化的例子:

#include <iostream>
#include <string>// 定义一个名为Person的类
class Person {
public:// 构造函数Person(const std::string& name, int age): name_(name), age_(age) // 初始化列表{// 构造函数的函数体(这里为空)}// 成员函数(方法)void display() const {std::cout << "Name: " << name_ << ", Age: " << age_ << std::endl;}private:std::string name_; // 名字int age_; // 年龄
};int main() {// 对象的创建和初始化// 使用构造函数直接初始化Person person1("Alice", 30);// 使用大括号列表(C++11及以后版本)初始化Person person2{"Bob", 25};// 调用成员函数person1.display(); // 输出:Name: Alice, Age: 30person2.display(); // 输出:Name: Bob, Age: 25// 注意:如果没有提供构造函数,编译器会生成一个默认的构造函数// 但这个默认构造函数不会执行任何初始化操作(对于内置类型),对于类类型成员会调用其默认构造函数return 0;
}


在上面的例子中,Person类有一个构造函数,它接受两个参数:name和age。这两个参数被用于初始化对象的name_和age_成员变量。

在main函数中,我们创建了两个Person对象:person1和person2。这两个对象在创建时都调用了构造函数,并传递了相应的参数来初始化它们的状态。

注意,构造函数的名字必须与类名相同,并且没有返回类型(包括void)。此外,构造函数可以有多个重载版本(参数列表不同),以支持不同的初始化方式。

另外,C++11及以后的版本支持使用大括号列表({})进行列表初始化。这提供了一种更加直观和一致的方式来初始化对象,尤其是当涉及到聚合类型(如数组和结构体)时。在上面的例子中,person2就是使用大括号列表进行初始化的。

C++类的访问控制

在C++中,类的访问控制是一个重要的特性,它允许程序员定义类的成员(包括成员函数和成员变量)的可见性和可访问性。这通过三种访问控制修饰符来实现:public、protected 和 private。

访问控制修饰符
public:使用public修饰符定义的成员可以在任何地方被访问,包括类的内部、类的派生类以及类的对象。
protected:使用protected修饰符定义的成员在类的内部和派生类内部可以被访问,但在类的对象上则不可访问。
private:使用private修饰符定义的成员只能在类的内部被访问,类的派生类和类的对象都无法直接访问它们。
示例下面是一个简单的C++类示例,展示了如何使用这些访问控制修饰符:

#include <iostream>class MyClass {
public:// 公有成员函数,可以在任何地方被访问void publicFunction() {std::cout << "This is a public function.\n";// 可以在这里访问公有和保护的成员// 但不能访问私有的成员}// 公有成员变量,可以在任何地方被访问(但通常不推荐公有数据成员)int publicVar;protected:// 保护成员函数,可以在类的内部和派生类内部被访问void protectedFunction() {std::cout << "This is a protected function.\n";}// 保护成员变量,可以在类的内部和派生类内部被访问int protectedVar;private:// 私有成员函数,只能在类的内部被访问void privateFunction() {std::cout << "This is a private function.\n";}// 私有成员变量,只能在类的内部被访问int privateVar;
};int main() {MyClass obj;// 可以访问公有成员obj.publicFunction(); // 正确obj.publicVar = 10; // 正确// 无法直接访问保护和私有成员// obj.protectedFunction(); // 错误// obj.protectedVar = 20; // 错误// obj.privateFunction(); // 错误// obj.privateVar = 30; // 错误return 0;
}

类的封装性

通过合理地使用访问控制修饰符,可以实现类的封装性。封装性是一种将类的数据和操作数据的方法(即成员函数)组合在一起,作为一个独立的单元。封装性可以隐藏类的实现细节,只暴露必要的接口给外部使用,从而保护类的数据不被非法访问和修改。

在C++中,通常将类的成员变量设置为private或protected,并通过public成员函数(也称为接口)来访问和修改这些成员变量。这样可以确保类的数据只能通过特定的方式进行访问和修改,从而增加了代码的安全性和可维护性。

相关文章:

C++类和对象总结

目录 总结 一、引言 二、类的定义 三、对象的创建与初始化 四、访问控制 五、封装 六、继承 七、多态 八、其他特性 九、总结 C类的定义 C对象的创建和初始化 C类的访问控制 总结 一、引言 C是一种面向对象的编程语言&#xff0c;其核心概念是类和对象。类是对现…...

基于PHP的民宿管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的民宿管理系统 一 介绍 此民宿管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端jquery.js和echarts.js。系统角色分为用户和管理员。用户可以在线浏览和预订民宿&#xff0c;管理员登录后台进行相关管理等。(在系统…...

ROS中C++、Python完整的目录结构

文章目录 在ROS中&#xff0c;一个典型的C软件包目录结构通常包括以下几个主要目录&#xff1a; include&#xff1a;该目录包含C头文件&#xff08;.hpp或者.h文件&#xff09;&#xff0c;用于声明类、函数、变量等。通常&#xff0c;这些头文件定义了ROS节点、消息类型、服务…...

Boosting原理代码实现

1&#xff0e;提升方法是将弱学习算法提升为强学习算法的统计学习方法。在分类学习中&#xff0c;提升方法通过反复修改训练数据的权值分布&#xff0c;构建一系列基本分类器&#xff08;弱分类器&#xff09;&#xff0c;并将这些基本分类器线性组合&#xff0c;构成一个强分类…...

【Qt基础教程】事件

文章目录 前言事件简介事件示例总结 前言 在开发复杂的图形用户界面(GUI)应用程序时&#xff0c;理解和掌握事件处理是至关重要的。Qt&#xff0c;作为一个强大的跨平台应用程序开发框架&#xff0c;提供了一套完整的事件处理系统。本教程旨在介绍Qt事件处理的基础知识&#x…...

外星人Alienware m15R7 原厂Windows11系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…...

stata17中java installation not found或java not recognozed的问题

此问题在于stata不知道去哪里找java,因此需要手动的告诉他 方法1&#xff1a; 1.你得保证已经安装并配置好java环境 2.在stata中输入以下内容并重启stata即可 set java_home "D:\Develope\JDk17" 其中java_home后面的""里面的内容是你的jdk安装路径 我的…...

Harbor本地仓库搭建003_Harbor常见错误解决_以及各功能使用介绍_镜像推送和拉取---分布式云原生部署架构搭建003

首先我们去登录一下harbor,但是可以看到,用户名密码没有错,但是登录不上去 是因为,我们用了负债均衡,nginx会把,负载均衡进行,随机分配,访问的 是harbora,还是harborb机器. loadbalancer中 解决方案,去loadbalance那个机器中,然后 这里就是25机器,我们登录25机器 然后去配置…...

怎样搭建serveru ftp个人服务器

首先说说什么是ftp&#xff1f; FTP协议是专门针对在两个系统之间传输大的文件这种应用开发出来的&#xff0c;它是TCP/IP协议的一部分。FTP的意思就是文件传输协议&#xff0c;用来管理TCP/IP网络上大型文件的快速传输。FTP早也是在Unix上开发出来的&#xff0c;并且很长一段…...

SEO是什么?SEO相关发展历史

一、SEO是什么意思&#xff1f; SEO&#xff08;Search Engine Optimization&#xff09;&#xff0c;翻译成中文就是“搜索引擎优化”。简单来讲&#xff0c;seo是指自然搜索结果下获得的网站流量的技术&#xff0c;是可以不用花钱就可以让自己的网站有好的排名&#xff0c;也…...

android之WindowManager悬浮框

文章目录 阐述悬浮框的实现AndroidManifest配置使用方法 阐述 Window的类型大致分为三种&#xff1a; Application Window 应用程序窗口、Sub Window 子窗口、System Window 系统窗口 窗口类型图层值&#xff08;type&#xff09;Application Window1&#xff5e;99Sub Windo…...

注解详解系列 - @Scope:定义Bean的作用范围

注解简介 在今天的注解详解系列中&#xff0c;我们将探讨Scope注解。Scope是Spring框架中的一个重要注解&#xff0c;用于定义bean的作用范围。通过Scope注解&#xff0c;可以控制Spring容器中bean的生命周期和实例化方式。 注解定义 Scope注解用于定义Spring bean的作用范围…...

仿中波本振电路的LC振荡器电路实验

手里正好有一套中波收音机套件的中周。用它来测试一下LC振荡器&#xff0c;电路如下&#xff1a; 用的是两只中频放大的中周&#xff0c;初步测试是用的中周自带的瓷管电容&#xff0c;他们应该都是谐振在465k附近。后续测试再更换电容测试。 静态电流&#xff0c;0.5到1mA。下…...

Java 面试题:谈谈 final、finally、 finalize 有什么不同?

在 Java 编程中&#xff0c;final、finally 和 finalize 是三个看似相似但用途截然不同的关键字和方法。理解它们的区别对于编写高质量和健壮的代码至关重要。 final 关键字可用于声明常量、方法和类。用在变量上表示变量不可变&#xff0c;用在方法上表示方法不能被重写&#…...

45、基于深度学习的螃蟹性别分类(matlab)

1、基于深度学习的螃蟹性别分类原理及流程 基于深度学习的螃蟹性别分类原理是利用深度学习模型对螃蟹的图像进行训练和识别&#xff0c;从而实现对螃蟹性别的自动分类。整个流程可以分为数据准备、模型构建、模型训练和性别分类四个步骤。 数据准备&#xff1a; 首先需要收集包…...

mongodb嵌套聚合

db.order.aggregate([{$match: {// 下单时间"createTime": {$gte: ISODate("2024-05-01T00:00:00Z"),$lte: ISODate("2024-05-31T23:59:59Z")}// 商品名称,"goods.productName": /美国皓齿/,//订单状态 2:待发货 3:已发货 4:交易成功…...

在 KubeSphere 上快速安装和使用 KDP 云原生数据平台

作者简介&#xff1a;金津&#xff0c;智领云高级研发经理&#xff0c;华中科技大学计算机系硕士。加入智领云 8 余年&#xff0c;长期从事云原生、容器化编排领域研发工作&#xff0c;主导了智领云自研的 BDOS 应用云平台、云原生大数据平台 KDP 等产品的开发&#xff0c;并在…...

Dev Eco Studio设置中文界面

Settings-Plugins-installed-搜索Chinese...

vscode作为markdown LaTeX编辑器

1、安装插件 Markdown All in One 2、下载并安装 prince&#xff1a;Prince - Latest builds Deepin 20.9 对应 debian 10&#xff0c;下载 debian 10 的deb包安装即可 &#xff08;安装后命令在 /usr/bin 下&#xff09; 3、安装插件 Markdown Preview Enhanced&#xff…...

Java中的图形用户界面开发

Java中的图形用户界面开发 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在当今软件开发的世界中&#xff0c;图形用户界面&#xff08;Graphical User Inte…...

android常用知识

透明activity样式&#xff1a; android:theme"android:style/Theme.Translucent.NoTitleBar.Fullscreen"这句代码&#xff0c;当你是建的empty activity project时&#xff0c;默认继承的是AppCompat这个类。所以在AndroidMifext.xml文件中用上述代码会导致程序错误&…...

centos中安装并设置vsftpd

vsftpd是一个可安装在linux上的ftp服务器软件。 一、安装 安装前保证服务器能上互联网。如果不能上网&#xff0c;看看能不能设法利用局域网代理上网。 sudo yum -y install vsftpd二、配置 1、修改配置文件 cd /etc/vsftpd #修改之前记得备份&#xff01;&#xff01;&am…...

C语言入门系列:指针入门(超详细)

文章目录 一&#xff0c;什么是指针1&#xff0c;内存2&#xff0c;指针是什么&#xff1f; 二&#xff0c;指针的声明1&#xff0c;声明指针类型变量2&#xff0c;二级指针 三&#xff0c;指针的计算1&#xff0c;两个指针运算符1.1 *运算符1.2 & 运算符1.3 &运算符与…...

打印水仙花数

题目&#xff1a;打印出所有的“水仙花数”&#xff0c;所谓“水仙花数”是指一个三位数&#xff0c;其各位数字立方和等于该数本身。 例如&#xff1a;153是一个“水仙花数”&#xff0c;因为153 1的三次方 &#xff0b;5的三次方&#xff0b;3的三次方。 程序分析&#xff…...

【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——下

1.从某超市顾客中随机抽取5名&#xff0c;他们的购物篮数据的二元0/1表示如下&#xff1a; 顾客号 面包 牛奶 尿布 啤酒 鸡蛋 可乐 1 1 1 0 0 0 0 2 1 0 1 1 1 0 3 0 1 1 1 0 1 4 1 1 1 1 0 0 5 1 1 1 0 0 1 某学生依据这些数据做…...

PyQt学习之简介

1.Python图形界面称为程序的用户交互界面&#xff0c;英文称之为 UI (user interface) Tkinter 基于Tk的Python库&#xff0c;Python官方采用的标准库&#xff0c;优点是作为Python标准库、稳定、发布程序较小&#xff0c;缺点是控件相对较少。 wxPython 基于wxWidgets的Py…...

深入理解前端缓存

前端缓存是所有前端程序员在成长历程中必须要面临的问题&#xff0c;它会让我们的项目得到非常大的优化提升&#xff0c;同样也会带来一些其它方面的困扰。大部分前端程序员也了解一些缓存相关的知识&#xff0c;比如&#xff1a;强缓存、协商缓存、cookie等&#xff0c;但是我…...

K-means聚类算法详解与实战

一、引言 K-means聚类算法是一种无监督学习算法&#xff0c;旨在将数据点划分为K个不同的聚类或群组&#xff0c;使得同一聚类内的数据点尽可能相似&#xff0c;而不同聚类间的数据点尽可能不同。在图像处理、数据挖掘、客户细分等领域有着广泛的应用。本文将通过图文结合的方…...

python数据分析-糖尿病数据集数据分析预测

一、研究背景和意义 糖尿病是美国最普遍的慢性病之一&#xff0c;每年影响数百万美国人&#xff0c;并对经济造成重大的经济负担。糖尿病是一种严重的慢性疾病&#xff0c;其中个体失去有效调节血液中葡萄糖水平的能力&#xff0c;并可能导致生活质量和预期寿命下降。。。。 …...

【前端】 nvm安装管理多版本node、 npm install失败解决方式

【问题】If you believe this might be a permissions issue, please double-check the npm ERR! permissio或者Error: EPERM: operation not permitted, VScode中npm install或cnpm install报错 简单总结&#xff0c;我们运行npm install 无法安装吧包&#xff0c;提示权限问题…...

第11天:API开发与REST framework

第11天&#xff1a;API开发与REST framework 目标 使用Django REST framework构建RESTful API。 任务概览 学习序列化器的概念和使用方法。创建API视图和路由。实现API的权限和认证。 详细步骤 1. 学习序列化器 序列化器是Django REST framework中用于数据转换的组件&am…...

2024 年解锁 Android 手机的 7 种简便方法

您是否忘记了 Android 手机的 Android 锁屏密码&#xff0c;并且您的手机已被锁定&#xff1f;您需要使用锁屏解锁 Android 手机&#xff1f;别担心&#xff0c;您不是唯一一个忘记密码的人。我将向您展示如何解锁 Android 手机的锁屏。 密码 PIN 可保护您的 Android 手机和 G…...

利用机器学习重构视频中的人脸

引言 中国与英国的研究团队携手合作&#xff0c;开创了一种创新的视频面孔重塑技术。这项技术能够以极高的一致性对视频中的面部结构进行逼真的放大和缩小&#xff0c;且避免了常见伪影的产生。 从研究人员选取的YouTube视频样例中可见&#xff0c;经过处理后&#xff0c;女演…...

2021数学建模C题目– 生产企业原材料的订购与运输

C 题——生产企业原材料的订购与运输 思路&#xff1a;该题主要是通过对供应商的供货能力和运送商的运货能力进行估计&#xff0c;给出合适的材料订购方案 程序获取 第一题问题思路与结果&#xff1a; 对 402 家供应商的供货特征进行量化分析&#xff0c;建立反映保障企业生…...

C# OpenCvSharp 图像复制-clone、copyTo

在C#中使用OpenCvSharp库处理图像时&#xff0c;clone和copyTo是两个非常常用的函数。理解和合理使用这些函数可以帮助你在图像处理项目中更高效地操作图像数据。本文将详细介绍这两个函数的使用方法&#xff0c;并通过具体的示例来说明它们的实际应用。 1. clone 函数 定义 …...

中国投入到终止遗传性疾病的战斗

中国投入到终止遗传性疾病的战斗 编译 李升伟 于2006年6月在澳大利亚的墨尔本会议上启动的人类变异组计划&#xff08;Human Variome Project&#xff0c;简称HVP&#xff09;&#xff0c;旨在全球范围内广泛收集所有基因和蛋白质序列变异和多态性的数据&#xff0c;采用全基…...

PCL common中常见的基础功能函数

文章目录 一、common模块中的头文件二、common模块中的基本函数1、angles.h2、centroid.h1)计算给定一群点的3D中心点,并且返回一个三维向量2)计算给定的三维点云的协方差矩阵。3)计算正则化的3*3的协方差矩阵以及给定点云数据的中心点4)利用一组点的指数对其进行一般的、…...

力扣每日一题 6/22 字符串/贪心

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2663.字典序最小的美丽字符串【困难】 题目&#xff1a; 如果一个字符串满…...

MCT Self-Refine:创新集成蒙特卡洛树搜索 (MCTS)提高复杂数学推理任务的性能,超GPT4,使用 LLaMa-3 8B 进行自我优化

&#x1f4dc; 文献卡 题目&#xff1a; Accessing GPT-4 level Mathematical Olympiad Solutions via Monte Carlo Tree Self-refine with LLaMa-3 8B作者: Di Zhang; Xiaoshui Huang; Dongzhan Zhou; Yuqiang Li; Wanli OuyangDOI: 10.48550/arXiv.2406.07394摘要: This pape…...

自制HTML5游戏《开心消消乐》

1. 引言 游戏介绍 《开心消消乐》是一款基于HTML5技术开发的网页游戏&#xff0c;以其简单的操作方式、轻松的游戏体验和高度的互动性&#xff0c;迅速在社交平台上获得了广泛的关注和传播。玩家通过消除相同类型的元素来获得分数&#xff0c;游戏设计巧妙&#xff0c;易于上手…...

【C++】平衡二叉树(AVL树)的实现

目录 一、AVL树的概念二、AVL树的实现1、AVL树的定义2. 平衡二叉树的插入2.1 按照二叉排序树的方式插入并更新平衡因子2.2 AVL树的旋转2.2.1 新节点插入较高左子树的左侧&#xff08;LL平衡旋转&#xff09;2.2.2 新节点插入较高右子树的右侧&#xff08;RR平衡旋转&#xff09…...

第一百一十八节 Java面向对象设计 - Java接口

Java面向对象设计 - Java接口 什么是接口&#xff1f; Java中的接口定义了一个引用类型来创建抽象概念。接口由类实现以提供概念的实现。 在Java 8之前&#xff0c;一个接口只能包含抽象方法。 Java 8允许接口具有实现的静态和默认方法。 接口通过抽象概念定义不相关类之间…...

Flink nc -l -p 监听端口测试

1、9999端口未占用 netstat -apn|grep 99992、消息发送端 nc -l -k -p 9999 {"user":"ming","url":"www.baidu1.com", "timestamp":1200L, "score":1} {"user":"xiaohu","url":…...

在IntelliJ IDEA中使用Spring Boot:快速配置

使用IntelliJ IDEA开发Spring Boot应用程序可以极大地提高开发效率&#xff0c;因为IDEA提供了许多便捷的功能&#xff0c;比如自动补全、代码分析、热部署等。以下是一篇可能的CSDN博客文章草稿&#xff0c;介绍如何在IntelliJ IDEA中使用Spring Boot&#xff1a; 在IntelliJ …...

django filter 批量修改

django filter 批量修改 在Django中&#xff0c;如果你想要批量修改记录&#xff0c;可以使用update()方法。这个方法允许你在一个查询集上执行批量更新&#xff0c;而不需要为每条记录生成单独的数据库事务。 以下是一个使用update()方法批量修改记录的例子&#xff1a; fro…...

maven:中央仓库验证方式改变:401 Content access is protected by token

前几天向maven中央仓库发布版本&#xff0c;执行上传命令mvn release:perform时报错了&#xff1a; [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.13:deploy (injected-nexus-deploy) on project xxxxx: Failed to deploy artifacts: …...

【面试】http

一、定义 HTTP&#xff08;超文本传输协议&#xff09;&#xff0c;是一种用于分布式、协作式、超媒体信息系统的应用层协议&#xff0c;它是万维网数据通信的基础。主要特点是无状态&#xff08;服务器不会保存之前请求的状态&#xff09;、无连接&#xff08;服务器处理完请…...

获取泛型,泛型擦除,TypeReference 原理分析

说明 author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 获取泛型&#xff0c;泛型擦除 下图中示例代码是一个工具类用于生成 csv 文件&#xff0c;需要拿到数据的类型&#xff0c;使用反射感知数据类型的字段&#xff0c;来填充表字段名。可以看到泛型…...

springboot 3.x 之 集成rabbitmq实现动态发送消息给不同的队列

背景 实际项目中遇到针对不同类型的消息&#xff0c;发送消息到不同的队列&#xff0c;而且队列可能还不存在&#xff0c;需要动态创建&#xff0c;于是写了如下代码&#xff0c;实践发现没啥问题&#xff0c;这里分享下。 环境 springboot 3.2 JDK 17 rabbitMQ模型介绍 图片…...

C++ 代码实现鼠标右键注册菜单,一级目录和二级目录方法

最近做的一个项目, 在使用windows的时候,我希望在右键菜单中添加一个自定义的选项, 该选项下有我经常使用的多个程序快捷方式, 直接上代码 头文件 #pragma once #include <Windows.h> #include <iostream> #include <string> using namespace std; …...