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

《面向对象程序设计-C++》实验五 虚函数的使用及抽象类

程序片段编程题

1.【问题描述】

基类shape类是一个表示形状的抽象类,area( )为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类(circles)、并给出具体的求面积函数。注:圆周率取3.14

#include<iostream>
#include<cmath>
#define PI 3.14
using namespace std;
class shape
{
public:virtual float area()=0;
};int main()
{shape *p;triangle t(3,4,5);circles c(10);p=&t;cout<<"triangle area:"<<p->area()<<endl;p=&c;cout<<"circles area:"<<p->area()<<endl;
}

这题常规补充三角形的面积公式和圆的面积公式就行了,but我现在C++有点忘记构造函数怎么写了,而且继承的时候public shape我还多添了一个冒号,基本功都不太行辣!

class triangle:public shape
{int a,b,c;
public:triangle(int a,int b,int c):a(a),b(b),c(c){}float area(){float p=(a+b+c)/2.0;return sqrt(p*(p-a)*(p-b)*(p-c)); }
};
class circles:public shape
{int r;
public:circles(int a):r(a){}float area(){return 3.14*r*r;}
};

2.【问题描述】

定义一个抽象类Base,在该类中定义一个纯需函数virtual void abstractMethod() = 0;派生一个基于Base的派生类Derived,在派生类Derived的abstractMethod方法中输出"Derived::abstractMethod is called",最后编写主函数,其内容如下:

#include<iostream>
using namespace std;class Base{public:virtual void abstractMethod() = 0;
};
class Derived:public Base{public:void abstractMethod(){cout<<"Derived::abstractMethod is called";}
};int main()
{Base* pBase = new Derived;pBase->abstractMethod();delete pBase;return 0;
}

虚函数的继承和正常的继承好像其实差别不大......

class Base{public:virtual void abstractMethod() = 0;
};
class Derived:public Base{public:void abstractMethod(){cout<<"Derived::abstractMethod is called";}
};

程序设计题

1.录入下面程序,并分析结果

#include <iostream>
#include <complex>
using namespace std;
class Base
{
public:Base() {cout<<"Base-ctor"<<endl;}~Base() {cout<<"Base-dtor"<<endl;}virtual void f(int){cout<<"Base::f(int)"<<endl;}virtual void f(double){cout<<"Base::f(double)"<<endl;}virtual void g(int i=10){cout<<"Base::g()"<<i<<endl;}
};class Derived : public Base
{
public:Derived() {cout<<"Derived-ctor" <<endl;}~Derived(){cout<<"Derived-dtor"<<endl;}void f(complex<double>) {cout<<"Derived::f(complex)"<<endl;}void g(int i=20){cout<<"Derived::g()"<<i<<endl;}
};
int main()
{cout<<sizeof(Base)<<endl;cout<<sizeof(Derived)<<endl;Base b;Derived d;Base *pb=new Derived;b.f(1.0);d.f(1.0);pb->f(1.0);b.g();d.g();pb->g();delete   pb;return 0;
}

我猜的结果和实际的结果——

事后诸葛亮:

相比之下,我错的地方有:

1.不知道sizeof多大

base类包含虚函数,因此会有一个虚表指针(vptr)。在大多数平台上,指针大小为4字节或8字节(取决于32位或64位系统)。因此,sizeof(Base)的输出通常是 8(64位)或 4(32位)。

2.构造派生类Derived前面是需要先构造基类的,所以开局还会有一个Base-ctor。

3.指针引用到new Derived实际上是需要重新构造一个类的,所以也有Base-ctor,Derived-ctor。但如果是引用到已经有的一个对象,比如d,就不需要重新构造了。

4.程序结束时,局部对象b和d也会被析构,分别调用Base和Derived的析构函数

5.

pb->f(1.0) 的行为

背景

  • pb 是一个指向 Derived 对象的 Base 类型指针。

  • f 是一个虚函数,因此会动态绑定到实际对象的类型(即 Derived 类)。

  • 1.0 是一个 double 类型的参数。

动态绑定过程

  1. 查找 Derived 类中的 f 函数:

    • Derived 类中定义了一个 f 函数:

      cpp

      复制

      void f(complex<double>) { cout << "Derived::f(complex)" << endl; }
    • 但这个函数的参数类型是 complex<double>,与 f(double) 不匹配。(complex<double> 是一个类类型,表示复数。它包含两个 double 类型的成员(实部和虚部)。double 是一个基本数据类型,表示双精度浮点数)

  2. 查找基类 Base 中的 f 函数:

    • Base 类中定义了两个 f 函数:

      cpp

      复制

      virtual void f(int) { cout << "Base::f(int)" << endl; }
      virtual void f(double) { cout << "Base::f(double)" << endl; }
    • 由于 Derived 类中没有匹配的 f(double) 函数,动态绑定会回退到基类的 f(double)

  3. 最终调用:

    • pb->f(1.0) 调用的是 Base::f(double),输出:

      Base::f(double)

6.

背景

  • pb 是一个指向 Derived 对象的 Base 类型指针。

  • g 是一个虚函数,因此会动态绑定到实际对象的类型(即 Derived 类)。

  • g 函数有一个默认参数。

动态绑定过程

  1. 查找 Derived 类中的 g 函数:

    • Derived 类中定义了一个 g 函数:

      cpp

      复制

      void g(int i = 20) { cout << "Derived::g()" << i << endl; }
    • 这个函数覆盖了基类 Base 中的 g 函数。

  2. 默认参数的解析:

    • 默认参数是在编译时解析的,而不是运行时。因此,pb->g() 的行为取决于 pb 的静态类型(即 Base 类型)。

    • Base 类型的 g 函数的默认参数是 10,因此 pb->g() 会使用 Base 类的默认参数 10

  3. 最终调用:

    • pb->g() 调用的是 Derived::g,但使用了 Base 类的默认参数 10,输出:

      Derived::g()10

2.录入下面程序,并分析结果

#include   <iostream>
using   namespace   std;
class   Base
{
public:Base():data(count){cout<<"Base-ctor"<<endl;++count;}~Base(){cout<<"Base-dtor"<<endl;--count;}static int count;int data;
};
int Base::count;
class Derived  : public Base
{
public:Derived():data(count),data1(data){cout<<"Derived-ctor"<<endl;++count;}~Derived(){cout<<"Derived-dtor"<<endl;--count;}static int count;int data1;int data;
};
int Derived::count=10;
int main()
{cout<<sizeof(Base)<<endl;//8cout<<sizeof(Derived)<<endl;//8Base* pb = new Derived[3];//Base-ctorDerived-ctor*3次 cout<<pb[2].data<<endl;//12cout<<((static_cast<Derived*>(pb))+2)->data1<<endl;//delete[] pb;//Derived-dtorBase-dtor*3次 cout<<Base::count<<endl;//cout<<Derived::count<<endl;//10return 0;
}

我的分析:

要崩溃了www

解释:

1.Base 类的大小为 4 字节,因为它只包含一个 int 类型的成员变量 data 和一个静态成员变量 count(静态成员变量不占用对象的内存)。Derived 类的大小为 12 字节,因为它继承了 Base 类的 data,并新增了两个 int 类型的成员变量 data1data。

2.在第三个对象构造时,Base::count 的值为 3,但 Derived 的构造函数中 data 被重新初始化为 Derived::count 的值,即 10。

3.data1 的值被覆盖为一个未定义的值(50331651),这可能是因为内存未正确初始化或存在其他问题

4.由于 pbBase 类型的指针,编译器只会调用 Base 的析构函数,而不会调用 Derived 的析构函数。这是因为 Base 的析构函数没有被声明为 virtual,导致多态行为失效。

5.Base::count 在析构完所有对象后为 0Derived::count 在析构完所有对象后为 13,因为 Derived 的析构函数没有被调用。

相关文章:

《面向对象程序设计-C++》实验五 虚函数的使用及抽象类

程序片段编程题 1.【问题描述】 基类shape类是一个表示形状的抽象类&#xff0c;area( )为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类&#xff08;circles&#xff09;、并给出具体的求面积函数。注&#xff1a;圆周率取3.14 #include<iostream> #in…...

PCIe - ZCU106(RC) + KU5P(EP) + 固化

目录 1. 简介 1.1 Data Mover 1.2 描述符 2. ZCU102 2.1 Ubuntu OS 2.2 USB Host 2.2.1 连接拓扑 2.2.2 设备类型 2.2.3 USB 跳帽设置 2.3 无线网卡 2.4 PCIe Info 2.4.1 Diagram 2.4.2 lspci -tv 2.4.3 lspci -v 2.4.2.1 设备基本信息 2.4.2.2 控制与状态寄存…...

网络编程核心技术解析:从Socket基础到实战开发

网络编程核心技术解析&#xff1a;从Socket基础到实战开发 一、Socket编程核心基础 1. 主机字节序与网络字节序&#xff1a;数据传输的统一语言 在计算机系统中&#xff0c;不同架构对多字节数据的存储顺序存在差异&#xff0c;而网络通信需要统一的字节序标准&#xff0c;这…...

SQL注入总结

一.sql注入 原理&#xff1a;当一个网站存在与用户交互的功能&#xff08;如登录表单、搜索框、评论区等&#xff09;&#xff0c;并且用户输入的数据未经充分过滤或转义&#xff0c;直接拼接到后台数据库查询语句中执行时&#xff0c;就可能引发SQL注入漏洞。攻击者可以通过构…...

conda 安装cudnn

通过 Conda 安装 cuDNN 确保你有 NVIDIA GPU 和 CUDA Toolkit&#xff1a;首先&#xff0c;确保你的系统上安装了 NVIDIA GPU 和 CUDA Toolkit。你可以通过运行以下命令来检查 CUDA 是否已安装&#xff1a;nvcc --version 如果没有安装 CUDA&#xff0c;你需要先从 NVIDIA CU…...

强啊!Oracle Database 23aiOracle Database 23ai:使用列别名进行分组排序!

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 从 Oracle Database 23ai 开始&#xff0c;您可以在 GROUP BY 和 HAVING 子句中直接使用列别名。此功能在早期版本的 Oracle Database 中不…...

RAG 2.0 深入解读

一、Introduction 过去一年可谓是RAG元年&#xff0c;检索增强生成技术迅速发展与深刻变革&#xff0c;其创新与应用已深刻重塑了大模型落地的技术范式。站在2025年&#xff0c;RAG不仅突破了早期文本处理的局限&#xff0c;更通过多模态融合、混合检索优化和语义鸿沟跨越等突…...

Excel Vlookup

VLOOKUP(A2, Sheet2!A:B, 2, 0) 代表的是检查A2,匹配源是sheet2表AB两列 Sheet2!A:B&#xff1a;指定要在其中查找数据的范围&#xff0c;这里是 Sheet12中的 A 列和 B 列&#xff0c;A 列是查找的依据列&#xff0c;B 列是要返回值的列。2&#xff1a;表示要返回查找区域中的…...

css媒体查询及css变量

媒体查询是 CSS 样式表最重要的功能之一&#xff0c;所谓媒体查询指的就是根据不同的媒体类型&#xff08;设备类型&#xff09;和条件来区分各种设备&#xff08;例如&#xff1a;电脑、手机、平板电脑、盲文设备等&#xff09;&#xff0c;并为它们分别定义不同的 CSS 样式。…...

CSS网格布局

网格布局将元素占用的空间划分为二维格子&#xff0c;下级元素放置在格子所在的位置上。划分格子的元素叫做网格容器&#xff0c;其 display 属性是 grid &#xff08;块元素&#xff09;或 inline-grid &#xff08;内联块元素&#xff09;。网格容器的下级元素叫做网格项。容…...

Windows远程连接MySQL报错,本地navicat能连接MySQL

一、报错 telnet 119.87.111.79 3306​​“无法打开到主机的连接。在端口 3306: 连接失败”​​ 表明无法通过 TCP 协议连接到目标服务器的 3306 端口。 二、目的 &#xff08;1&#xff09;​​Telnet 测试的目的​​ Telnet 仅用于测试 ​​TCP 端口是否开放​​&#xff…...

Github打不开怎么办?

国内无法打开github&#xff0c;使有watt toolkit一键加速即可打开。 加速器 加速器直接加速Github原站&#xff0c;在开发者使用或者需要登录账号时非常有效 Watt Toolkit&#xff08;原Steam&#xff09; 官网地址&#xff1a;Watt Toolkit 一、进入官网后&#xff0c;点…...

亿级流量系统架构设计与实战(四)

本章关键词 : 读 / 写分离 、 数据缓存 、 缓存更新 、 CQRS 、 数据分片 、 异步写。 高并发架构设计的要点 形成高并发系统的必要条件 高性能、高可用、可扩展。 高性能: 性能代表一个系统的并行处理能力,在同样的硬件设备条件下 , 性能越高 , 越能节约硬件资源。高可…...

Java基础问题——八股盛宴 | 3w字分享

目录 面向对象与面向过程的区别&#xff1f; Java面向对象有哪些特征&#xff0c;如何应用&#xff1f; 介绍下Java中的四种引用&#xff1f; Java中创建对象有几种方式&#xff1f; Java中的序列化和反序列化是什么&#xff1f; 什么是Java中不可变类&#xff1f; Java…...

保障企业的数据安全需要做什么?

守护企业数据安全&#xff0c;犹如构筑一座固若金汤的城堡&#xff0c;需要从技术壁垒、管理护城河、流程吊桥和人员守卫等多维度精心布局&#xff0c;打造环环相扣的立体防御体系。我们从以下关键项分析&#xff1a; 一、技术层面 数据加密 对敏感数据&#xff08;如客户信息、…...

Flutter开发IOS蓝牙APP的大坑

Core Bluetooth 框架限制&#xff1a;iOS 的 Core Bluetooth 框架存在限制&#xff0c;如果指定的特征配置同时允许通知&#xff08;Notifications&#xff09;和指示&#xff08;Indications&#xff09;&#xff0c;调用相关方法设置通知值时&#xff0c;默认仅会开启通知功能…...

LeetCode 解题思路 45(分割等和子集、最长有效括号)

解题思路&#xff1a; dp 数组的含义&#xff1a; 在数组中是否存在一个子集&#xff0c;其和为 i。递推公式&#xff1a; dp[i] | dp[i - num]。dp 数组初始化&#xff1a; dp[0] true。遍历顺序&#xff1a; 从大到小去遍历&#xff0c;从 i target 开始&#xff0c;直到 …...

AI Agent 入门指南:从 LLM 到智能体

AI. AI. AI. 最近耳朵里是不是总是被这些词轰炸&#xff1f;特别是“Agent”、“AI Agent”、“智能体”、“Agentic”…… 感觉一夜之间&#xff0c;AI 就从我们熟悉的聊天框里蹦出来&#xff0c;要拥有“独立思考”和“自主行动”的能力了&#xff1f; 说实话&#xff0c;一…...

高级java每日一道面试题-2025年5月02日-基础篇[反射篇-编码]-使用反射,获取Class对象

如果有遗漏,评论区告诉我进行补充 面试官: 编写代码通过三种方式&#xff08;类名.class、对象.getClass()、Class.forName()&#xff09;获取java.util.ArrayList的Class对象。 我回答: 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#…...

【bug】fused_bias_act_kernel.cu卡住没反应

简述 在推理人脸修复face restoration算法 GPEN的时候&#xff0c;发现有时候fused_bias_act_kernel.cu卡住没反应。 解决 清理下缓存&#xff0c;让程序自己再编译下...

小游戏(2)扫雷游戏

一、简述 鸽子的时间太长了&#xff0c;其实学完数组和函数就应该搞出来这个丐版的小游戏了&#xff0c;不耽误&#xff0c;反正总归是轮到了&#xff0c;嘻嘻。 二、依旧菜单\. 我们这里写的是一个丐版的扫雷游戏&#xff0c;难度就固定了&#xff0c;所以菜单写起来就是玩游…...

如何在vscode中set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`

1.打开工作区设置文件 在 VS Code 中通过文件 -> 首选项 -> 设置&#xff0c;接着在设置窗口的右上角点击打开设置&#xff08;JSON&#xff09;&#xff0c;这会打开settings.json文件。 2.添加环境变量设置 "terminal.integrated.env.linux": { "TF_EN…...

leetcode 24. 两两交换链表中的节点

题目描述 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next…...

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT 数据集准备常用数据集自定义数据集AlpacaShareGPT数据集准备 常用数据集 预训练数据集 Wiki Demo (en)RefinedWeb (en)RedPajama V2 (en)Wikipedia (en)Wikipedia (zh)Pile (en)...

使用Homebrew下载配置git和连接GitHub(Mac版)

本文详细介绍了在M系列Mac上安装Homebrew并配置Git的过程&#xff0c;包括git的下载、设置全局用户名和邮箱、生成SSH密钥、添加GitHubSSH密钥以及终端验证。这些步骤有助于用户顺利进行协同开发。 一、下载git 1、终端输入一下命令 brew install git2、这时下载完成 二、配…...

电子电器架构 --- 网关转发时延解析

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

shell-流程控制-循环-函数

1. 2. 3.获取当前目录下的普通文件的文件名作为变量列表打印输出 4.打印出下面语句中字符数不大于6的单词 rabbit is favorite to eat cabbage 5.Shell允许用户指定for语句的步长。当用户需要另外指定步长时 6.批量创建用户&#xff1a; 用户名以test开头&#xff0c;按数字序号…...

Paramiko 性能优化详解

1. 复用连接&#xff1a;减少 SSH 连接开销 SSH 连接的建立涉及 TCP 握手、密钥交换、身份认证等步骤&#xff0c;频繁创建连接会显著降低性能。复用连接是核心优化手段。 优化方法 手动创建 Transport 对象并复用通过同一 Transport 执行多种操作&#xff08;命令、SFTP、端…...

代码随想录图论part03

第十一章&#xff1a;图论part03 孤岛的总面积 &#xff08;深搜&#xff09; 代码随想录 孤岛问题&#xff1a;先处理边缘岛在处理孤岛 沉没孤岛 &#xff08;广搜&#xff09; 代码随想录 水流问题 代码随想录 目的&#xff1a;找水源 思路;逆向思考&#xff0c;找两…...

树上背包学习笔记

树上背包&#xff0c;顾名思义&#xff0c;就是在树上跑背包。每日顾名思义 Q&#xff1a;那么到底为什么要树上跑背包 dp 呢&#xff1f; A&#xff1a;因为我们到现在学的背包 dp 还是属于较浅的一类&#xff0c;什么 01 背包、完全背包还是多重背包&#xff0c;但是如果这…...

CPU:为什么Ryzen 7000系列处理器PCIe通道总数是28,而可用的通道数是24?

AMD Ryzen 7000系列&#xff08;Zen 4架构&#xff09;处理器的 28条PCIe 5.0通道 中&#xff0c;有 4条固定用于连接主板芯片组&#xff08;如X670/B650&#xff09;&#xff0c;剩余的 24条直接分配给用户设备。以下是具体分配逻辑&#xff1a; 1. PCIe通道的总分配 24条直连…...

OpenCV 图形API(80)图像与通道拼接函数-----仿射变换函数warpAffine()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对图像应用仿射变换。 函数 warpAffine 使用指定的矩阵对源图像进行变换&#xff1a; dst ( x , y ) src ( M 11 x M 12 y M 13 , M 21 x M…...

巧记英语四级单词 Unit7-下【晓艳老师版】

navigate v. 航行&#xff0c;航空 那六扇门gatevibrate v.颤抖&#xff0c;抖动 男生早上起来看到六个文胸在那挂着&#xff0c;春心荡漾virtual a.事实上&#xff0c;实际上的 发音“龌龊”&#xff1b;通常lyvia prep.经过 a想成小乌龟&#xff0c;兔子想到河对面吃草&am…...

idea使用lombok错误,找不到符号,明明编译没问题,运行报错

lombok使用出现的问题 问题找不到方法 经常遇到这样的小伙伴看到这个是不是一头雾水&#xff0c;明明我编译没有我问题&#xff0c;运行就出现问题&#xff0c;真的很生气。 下面介绍解决这个问题的几种方法。 开启 annotation processing 开启之后重启&#xff0c;试试有…...

Transformer面经

请问你对Transformer有什么了解 简要回答的话可以这样&#xff1a; Transformer是一种基于自注意力机制的神经网络架构&#xff0c;它主要用于处理序列数据&#xff0c;如自然语言处理。 核心的组件有&#xff1a;自注意力机制&#xff08;计算序列中每个元素与其他元素的相…...

学习Python的第二天之网络爬虫

30岁程序员学习Python的第二天之网络爬虫的信息提取 BeautifulSoup库 地址&#xff1a;https://beautifulsoup.readthedocs.io/zh-cn/v4.4.0/ 1、BeautifulSoup4安装 在windows系统下通过管理员权限运行cmd窗口 运行pip install beautifulsoup4 测试实例 import requests…...

【基础】Python包管理工具uv使用教程

一、uv简介 uv 是由 Astral&#xff08;前身为 Basis&#xff09;团队开发的 Python 包安装器和解析器&#xff0c;完全使用 Rust 语言编写。与传统 Python 工具不同&#xff0c;uv 将多个工具的功能整合到一个高性能的解决方案中&#xff0c;旨在提供更现代、更高效的 Python…...

【十五】Mybatis动态SQL实现原理

Mybatis动态SQL实现原理 目录 Mybatis动态SQL实现原理 概述 动态 SQL 实现原理 总结 概述 每天日常开发都在使用mybatis&#xff0c;但是很多人并没有花心思去理解mybatis的实现原理&#xff0c;一直处于使用阶段&#xff0c;程序员的使命是改变世界&#xff0c;这一点可能…...

UE5 把翅膀动画额外创建动画蓝图并和角色绑定混合动画

把翅膀和角色合并,把翅膀绑在Spine_3上 在5.3内,需要LayerSetup指定骨骼才能使用混合...

Coding Practice,48天强训(30)

Topic 1&#xff1a;爱吃素&#xff08;素数性质&#xff09; 爱吃素 在强训25的第一题我总结过关于素数的几种判断方式&#xff0c;如果忘了可以回去看 第一次写我是这样写的 #include <bits/stdc.h> using namespace std;bool isPrime(long long &a, long long …...

华为私有协议Hybrid

实验top图 理论环节 1. 基本概念 Hybrid接口&#xff1a; 支持同时处理多个VLAN流量&#xff0c;且能针对不同VLAN配置是否携带标签&#xff08;Tagged/Untagged&#xff09;。 核心特性&#xff1a; 灵活控制数据帧的标签处理方式&#xff0c;适用于复杂网络场景。 2. 工作…...

神经网络之互动练习详解:从基础到拟合非线性数据

神经网络之互动练习详解&#xff1a;从基础到拟合非线性数据 在机器学习的世界里&#xff0c;神经网络是一种强大而神奇的工具&#xff0c;它可以帮助我们解决各种复杂的问题。今天&#xff0c;我们就通过一个有趣的互动练习&#xff0c;来深入了解神经网络的工作原理以及如何…...

遨游科普:2025年,三防平板有多智能?

在极端环境与复杂场景中&#xff0c;专业设备的可靠性始终是行业应用的核心命题。随着物联网、5G通信与边缘计算技术的深度融合&#xff0c;三防平板已突破传统“坚固耐用”的单一属性&#xff0c;进化为集多模通讯、智能感知与场景化扩展于一体的移动智能终端。 AORO P9000三防…...

基于C++的IOT网关和平台7:github项目ctGateway设备协议开发指南

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。 源码指引:github源码指引_初级代码游戏的博客-CSDN博客 系…...

yolov8中的python基础--模块导入篇

import语句有几种不同的写法&#xff0c;它们有不同的用途和优势。 1. 直接 import 语法 import module_name 用途 导入整个模块&#xff0c;使用时需要通过模块名访问其中的内容。 示例 import os print(os.listdir()) # 必须用 os. 前缀 适用场景 当需要频繁使用模块…...

26.2Linux中SPI的驱动实验(编程)_csdn

我尽量讲的更详细&#xff0c;为了关注我的粉丝&#xff01;&#xff01;&#xff01; 这里我们用到的是stm32mp157的板子&#xff0c;所以我们看一下SPI用到的引脚。 1、硬件原理图分析 SPI1_MOSI&#xff08;对应芯片引脚 SDA/SDI &#xff09;&#xff1a;主机输出从机输入…...

uv简单使用

通过uv创建项目和虚拟环境 初始化项目 uv init --package my-project 初始化一个名为 my-project 的新项目&#xff0c;并生成必要的文件结构。 创建虚拟环境 uv venv .venv 激活虚拟环境 # For Windows .venv\Scripts\activate# For macOS/Linux source .venv/bin/acti…...

扩增子分析|微生物生态网络稳定性评估之鲁棒性(Robustness)和易损性(Vulnerability)在R中实现

一、引言 周集中老师团队于2021年在Nature climate change发表的文章&#xff0c;阐述了网络稳定性评估的原理算法&#xff0c;并提供了完整的代码。自此对微生物生态网络的评估具有更全面的指标&#xff0c;自此网络稳定性的评估广受大家欢迎。本系列将介绍网络稳定性之鲁棒性…...

线性回归评价标准

In [1]: 12345 import numpy as npfrom sklearn.linear_model import LinearRegressionimport sklearn.datasets as datasets 12 ()diabetesdiabetes $$datasets.load_diabetes In [2]: Out[2]: {‘data’: array([[ 0.03807591,0.05068012,0.06169621,…,-0.00259226, 0.0…...

Qt—鼠标移动事件的趣味小程序:会移动的按钮

1.项目目标 本次根据Qt的鼠标移动事件实现一个趣味小程序&#xff1a;当鼠标移动到按钮时&#xff0c;按钮就会随机出现在置&#xff0c;以至于根本点击不到按钮。​​​​​ 2.项目步骤 首先现在ui界面设计控件(也可以用代码的方式创建&#xff0c;就不多说了) 第一个按钮不需…...