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

【语法】C++继承中遇到的问题及解决方法

目录

1.子类构造函数中初始化父类成员

2.子类显式调用父类的析构函数

第一种说法:重定义

反驳:

第二种说法:operator~

3.因编译器版本过低而出现错误


贴主在学习C++的继承时,遇到了很多问题,觉得很变态,特此发帖分享

1.子类构造函数中初始化父类成员

众所周知,在子类的构造函数中是不能初始化父类成员的,必须调用父类的构造函数来完成初始化

#include <iostream>
using namespace std;
class base
{
public:base():_a(0){cout << "constructor base \n";}
protected:int _a;
};class derived : public base
{
public:derived():_a(0)//报错,因为_a是父类成员{cout << "constructor derived \n";}
};

 但有一种情况可能会被误认为是初始化

#include <iostream>
using namespace std;
class base
{
public:base():_a(0){cout << "constructor base \n";}
protected:int _a;
};class derived : public base
{
public:derived()//:base()这里已经隐式调用了base的构造函数了{_a = 0;cout << "constructor derived \n";}
};

这确实可以运行,但这里其实并不是初始化(initialization),而是赋值(assignment),这里看似没有调用父类的初始化,但其实会隐式调用构造函数

可以看到,base的构造函数还是被调用了,这就是隐式调用了base的构造函数 

那拷贝构造函数呢?若子类不定义默认构造函数的话,拷贝构造时确实会调用父类的拷贝构造函数完成父类函数的初始化

#include <iostream>
using namespace std;
class base
{
public:base():_a(0){cout << "constructor base \n";}base(const base& b):_a(b._a){cout << "copy constructor base \n";}
protected:int _a;
};class derived : public base
{
public:derived():base(){cout << "constructor derived \n";}
};int main()
{derived a;cout << "\n";derived b(a);return 0;
}

输出结果:

 可以看到在拷贝构造时,隐式调用了父类的拷贝构造

但如果子类有用户定义的拷贝构造函数,如果没有显式调用父类的拷贝构造函数,编译器就会隐式调用父类的构造函数

#include <iostream>
using namespace std;
class base
{
public:base():_a(0){cout << "constructor base \n";}base(const base& b):_a(b._a){cout << "copy constructor base \n";}
protected:int _a;
};class derived : public base
{
public:derived():base(){cout << "constructor derived \n";}derived(const derived& d)//子类拷贝构造不显式调用父类的拷贝构造,会隐式调用父类的构造函数完成父类成员初始化{cout << "copy constructor derived \n";}
};int main()
{derived a;cout << "\n";derived b(a);return 0;
}

输出结果:

可以看到,在拷贝构造时,编译器先隐式调用了父类的构造函数

2.子类显式调用父类的析构函数

众所周知,子类的析构函数会在被调用完成后自动调用父类的析构函数清理父类成员。因为这样才能保证子类对象先清理子类成员再清理父类成员的顺序。

#include <iostream>
using namespace std;
class base
{
public:base(){cout << "constructor base \n";}~base(){cout << "destructor base \n";}
};class derived : public base
{
public:derived(){cout << "constructor derived \n";}~derived(){~base();cout << "destructor derived \n";}//会报错
};int main()
{derived a;return 0;
}

报错: 

当然,对于99%的情况来说,根本用不到显式调用析构函数,剩下的1%就是placement new 管理内存 的情况

对于这里的报错,我目前知道两种说法

第一种说法:重定义

这里的~base和~derived构成重定义(隐藏),但他们两个函数名不相同啊?这是因为经过编译器处理后所有的析构函数都会被处理成destructor(为了支持多态),那他们两个析构函数就是重名函数了,父类的析构函数就会被重定义,此时要想让编译器知道你要调用的是父类的析构,就要在前面加上作用域限定符

int main()
{cout << int() <<endl;return 0;
}

反驳:

“隐藏”是非限定名查找的一部分。而析构函数的查找方式有所不同,因此不存在隐藏关系。也没有所谓的“转换为特殊名称 destructor(析构函数)”这样的过程作为名称查找的目的。 

如果有大佬知道到底对不对的,欢迎评论区解答!!!

第二种说法:operator~

这里的报错和是不是继承没有关系,因为下面代码也会报同样的错误

class base
{~base(){cout << "~base \n";}void func(){~base();}
};

这段代码的执行顺序其实是先base(),再~

base()会先构造一个base的临时对象。这里其实不难理解,就例如int(),会调用int的默认构造函数创建临时的int变量,它的值是0

int main()
{cout << int() <<endl;return 0;
}

输出:0

所以base()也一样,会调用base的默认构造函数来构建一个临时的base对象

然后会试图调用base对象的operator~重载,如下图

#include <iostream>
using namespace std;
class base
{
public:base(){cout << "constructor base \n";}~base(){cout << "destructor base \n";}void operator~(){cout << "operator ~ \n";}
};class derived : public base
{
public:derived(){cout << "constructor derived \n";}~derived(){base::~base();cout << "destructor derived \n";}
};
int main()
{~base();cout <<"\n";base().operator~();//第一行就相当于这么调用return 0;
}

输出结果:

如上图,第一个和第一行和第三行的代码输出结果相同

所以报错的原因就是base类没有operator~重载

流程:先构造一个临时的base对象,再调用临时base对象的operator~运算符,最后析构这个临时的base对象

3.因编译器版本过低而出现错误

 根据第二个问题可以得知,当写出~base()时,会先构造一个临时的base对象,然后调用该对象的operator~操作符,最后析构这个临时base对象

而如果要直接在子类中调用父类析构函数,可以这样

class derived : public base
{
public:derived(){cout << "constructor derived \n";}~derived(){base::~base();cout << "destructor derived \n";}
};

~base()的前面加上作用域限定符,这样编译器就知道你是要调用父类的析构函数,而不是operator~重载。

但如果在父类有operator~重载时,在子类中调用base::~base();呢?

#include <iostream>using namespace std;
class base
{
public:base(){cout << "constructor base \n";}~base(){cout << "destructor base \n";}void operator~(){cout << "operator ~ \n";}
};class derived : public base
{
public:derived(){cout << "constructor derived \n";}~derived(){base::~base();cout << "destructor derived \n";}
};
int main()
{derived d;return 0;
}

上面代码在我之前的编译器中,就会编译错误

error:

cmd /c chcp 65001>nul && C:\mingw64\bin\g++.exe -fdiagnostics-color=always -g "D:\Valkyrie-text\simple text\text.cpp" -o "D:\Valkyrie-text\simple text\text.exe"
D:\Valkyrie-text\simple text\text.cpp: In destructor 'derived::~derived()':
D:\Valkyrie-text\simple text\text.cpp:15:28: error: no matching function for call to 'derived::~derived()'~derived(){base::~base();cout << "destructor derived \n";}^
D:\Valkyrie-text\simple text\text.cpp:7:5: note: candidate: 'base::~base()'~base(){cout << "destructor base \n";}^
D:\Valkyrie-text\simple text\text.cpp:7:5: note:   candidate expects 1 argument, 0 provided

后来发现,这是编译器在抱怨缺少参数

在前面加上thts->就可以了

this->base::~base();

相信又很多人运行上面代码时都会报和我一样的错误,这是因为编译器的版本太低

我之前的编译器是8.1.0的gcc

现在更新了,用14.2.0的版本就不会再报这个错了,所以强烈建议大家更新一下自己的编译器!

相关文章:

【语法】C++继承中遇到的问题及解决方法

目录 1.子类构造函数中初始化父类成员 2.子类显式调用父类的析构函数 第一种说法&#xff1a;重定义 反驳&#xff1a; 第二种说法&#xff1a;operator~ 3.因编译器版本过低而出现错误 贴主在学习C的继承时&#xff0c;遇到了很多问题&#xff0c;觉得很变态&#xff0c…...

【自然语言处理与大模型】LangChain大模型应用框架入门②

本文介绍LangChain的另一个重要组件——提示词模板&#xff08;Prompt Template&#xff09;组件&#xff0c;它主要用于将用户输入和参数转换为语言模型可理解的指令。有助于引导模型生成符合预期的响应&#xff0c;帮助其更好地理解上下文&#xff0c;从而输出相关且连贯的语…...

首页数据展示

排版 现在做首页的排版&#xff0c;依旧是偷antd里面的东西 使用card包裹list的样式 import React from react import axios import { Card, Col, Row, List } from antd import { EditOutlined, EllipsisOutlined, SettingOutlined } from ant-design/icons; import { Avat…...

推荐系统实验指标置信度:p值核心原理与工程应用指南

目录 一、推荐系统实验中的置信度困境二、p值核心原理&#xff1a;从假设检验到推荐场景适配2.1 基础概念与数学定义2.2 通俗版本核心白话总结&#xff1a; 2.2 推荐系统指标分类与统计方法 三、推荐系统实验p值计算全流程3.1 实验设计阶段&#xff1a;流量分配与检验效能3.2 数…...

linux FTP服务器搭建

FTP服务器搭建 系统环境&#xff1a;ubuntu 搭建方式&#xff1a;win系统下通过ssh连接ubuntu&#xff0c;搭建FTP服务 一、ssh连接 ssh -p 端口 用户名IP ssh -p 22 ubuntu192.168.1.109 密码&#xff1a;ubuntu123456 二、安装配置FTP服务器 1、安装 sudo apt install v…...

如何搭建一个简单的文件服务器的方法

搭建一个简易的文件服务器可以让你在局域网或互联网中共享文件&#xff0c;方便不同设备之间的访问与管理。以下是基于常见平台(Windows、Linux)分别介绍如何搭建一个简单的文件服务器的方法&#xff0c;适合个人或小型办公环境使用。 一、文件服务器的准备工作 所需条件&#…...

通信原理第七版与第六版的区别附pdf

介绍 我用夸克网盘分享了「通信原理 第7版》樊昌信」&#xff0c; 链接&#xff1a;https://pan.quark.cn/s/be7c5af4cdce 《通信原理&#xff08;第7版&#xff09;》是在第6版的基础上&#xff0c;为了适应当前通信技术发展和教学需求&#xff0c;并吸取了数十所院校教师的反…...

【工具】PDF转HTML

【工具】PDF转HTML 可通过命令执行&#xff0c; 集成到项目中 pdf2htmlEX windows系统可执行版下载地址&#xff1a; http://soft.rubypdf.com/software/pdf2htmlex-windows-version https://github.com/coolwanglu/pdf2htmlEX .\pdf2htmlEX.exe --zoom 1.8 a.pdf .\pdf2html…...

Latex全面汇总

文章目录 简介1.基本使用中文编码的方式2.文章标题日期等3.加粗斜体等格式4.章节问题5.图片问题6.列表7.数学公式8.表格9.常用的latex网站汇总总结 简介 Latex 基本使用教程,主要还是为manim而准备的.   现在发现用typora来记录笔记更方便些&#xff0c;csdn用的就很少了&…...

AI日报 - 2025年04月30日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | 扎克伯格预言通用智能将超越个体&#xff0c;Neuralink助ALS患者思维交流 通用智能系统潜力巨大&#xff0c;脑机接口实现重大应用突破。 ▎&#x1f4bc; 商业动向 | 阿里巴巴发布Qwen3&#xff0c;xAI推Grok 3 M…...

redis高级进阶

1.redis主从复制 redis主从复制1 2.redis哨兵模式 哔哩哔哩视频 redis哨兵模式1 redis哨兵模式2 redis哨兵模式3 3.redis分片集群 redis分片集群1 redis分片集群2 redis分片集群3...

【android bluetooth 协议分析 06】【l2cap详解 11】【l2cap连接超时处理逻辑介绍】

我们在使用蓝牙的过程中&#xff0c; 当上层 应用 断开所有的 profile 后&#xff0c; 协议栈就会帮我们下发 disconnect 命令。本节就让笨叔&#xff0c; 带大家一起梳理这块内容&#xff0c;具体在协议栈如何处理的。 梳理开始前&#xff0c; 先思考一下。 我们为什么要梳理…...

Spring、Spring MVC 与 Spring Boot 的关系与核心用途

1. 三者关系图解 ------------------- | Spring Boot | → 基于 Spring&#xff0c;简化配置与部署 -------------------▲| 依赖 ------------------- | Spring Framework | → 核心容器&#xff08;IoC/AOP&#xff09;与基础模块 -------------------▲| 扩展 ---…...

如何搭建spark yarn 模式的集群集群

&#xff08;一&#xff09;什么是SparkONYarn模式 Spark on YARN&#xff08;Yet Another Resource Negotiator&#xff09;是 Spark 框架在 Hadoop 集群中运行的一种部署模式&#xff0c;它借助 Hadoop YARN 来管理资源和调度任务。 架构组成 ResourceManager&#xff1a;作为…...

共探蓝海赛道增长新方法 阿里国际站智能AI全球买家分析峰会在深落幕

来源&#xff1a;深圳晚报 随着全球贸易环境不断变化&#xff0c;跨境电商已成为推动企业发展的重要动力。为帮助企业更好地应对新的市场挑战&#xff0c;阿里巴巴国际站深莞惠大区于4月29日举办了“万亿商机 蓝海新市场”智能AI全球买家分析峰会&#xff0c;现已圆满落幕&…...

今日行情明日机会——20250429

指数依然在区间震荡&#xff0c;等待方向&#xff0c;重点关注决定大盘方向的板块&#xff0c;如证券的走势~ 2025年4月29日涨停主要行业方向分析 一、核心主线方向 一季报增长&#xff08;业绩驱动资金避险&#xff09; • 涨停家数&#xff1a;16家。 • 代表标的&#xff…...

什么是缓存?在NGINX中如何配置缓存以提升性能?

大家好&#xff0c;我是锋哥。今天分享关于【什么是缓存&#xff1f;在NGINX中如何配置缓存以提升性能&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么是缓存&#xff1f;在NGINX中如何配置缓存以提升性能&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java…...

价值投资笔记:企业护城河——虚假陷阱与隐性壁垒的深度解析

一、护城河的本质与误判风险 护城河是企业抵御竞争、维持超额利润的核心能力。然而&#xff0c;市场中充斥着大量“虚假护城河”&#xff0c;它们看似构成壁垒&#xff0c;实则脆弱易碎。晨星公司研究显示&#xff0c;超过60%的企业竞争优势被误判为护城河&#xff0c;投资者需…...

2025年04月29日Github流行趋势

项目名称&#xff1a;Deep-Live-Cam 项目地址url&#xff1a;https://github.com/hacksider/Deep-Live-Cam项目语言&#xff1a;Python历史star数&#xff1a;52291今日star数&#xff1a;380项目维护者&#xff1a;hacksider, KRSHH, vic4key, pereiraroland26, kier007项目简…...

docker排查OOM Killer

文章目录 一.检查1.内存不足 (OOM Killer)2. CPU 资源限制3. 存储空间不足4. 应用自身崩溃5. 健康检查失败针对性建议 二.内存不足问题根源解决方案&#xff08;按优先级排序&#xff09;1. 紧急措施&#xff1a;立即释放内存2. 启用 Swap 交换空间&#xff08;必须做&#xff…...

leetcode继续c++10/100

不应该是10-13-3吗 ChatGLM 引用 从代码片段来看&#xff0c;函数 findAnagrams 的目的是在字符串 s 中找到所有与字符串 p 是字母异位词的子串的起始索引。 代码中有一些调试输出语句&#xff0c;这些语句可能会影响程序的正常逻辑。具体来说&#xff1a; cpp 复制 cout …...

Kubernetes集群使用Harbor容器镜像仓库

实验环境 一、容器镜像仓库Harbor部署 1、配置主机名 192.168.10.14&#xff1a; hostnamectl set-hostname harbor 2、安装Docker wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-…...

归并排序排序总结

1. 归并排序 1.1 基本思想 归并排序&#xff08;Merge Sort&#xff09;是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。它的基本思想是将一个数组分成两个子数组&#xff0c;分别对这两个子数组进行排序&#xff0c;然后将排好序的子数组合并…...

面试手撕——快速排序

思路 partition方法将整个区间分为两部分&#xff0c;一部分比pivot小&#xff0c;一部分比pivot大&#xff0c; i表示&#xff0c;小于等于pivot的下标&#xff0c;j表示当前遍历到哪一个元素了&#xff0c;如果发现当前元素j小于等于pivot&#xff0c;i&#xff0c;在i1的位…...

大模型微调之LLaMA-Factory 系列教程大纲

LLaMA-Factory 系列教程大纲 一、基础入门篇&#xff1a;环境搭建与核心功能解析 环境部署与框架特性 硬件要求&#xff1a; 单机训练&#xff1a;推荐 24GB 显存 GPU&#xff08;如 RTX 4090&#xff09;&#xff0c;支持 7B-32B 模型 LoRA 微调。分布式训练&#xff1a;2 块…...

26考研 | 王道 | 计算机网络 | 第一章 计算机网络的体系结构

26考研 | 王道 | 第一章 计算机网络的体系结构 文章目录 26考研 | 王道 | 第一章 计算机网络的体系结构1.1 计算机网络概述1.计算机网络的概念2.计算机网络的组成**从组成部分看****从工作方式看****从逻辑功能看** 3.计算机网络的功能4.电路交换、报文交换、分组交换1. 电路交…...

CentosLinux系统crontab发现执行删除命令失效解决方法

权限或安全策略限制 ​​可能场景​​&#xff1a; ​​### ​​目录权限冲突​​&#xff1a; 你的目录权限为 drwxr-xr-x&#xff08;属主 mssql&#xff09;&#xff0c;但 cron 任务以 root 执行。 ​​风险点​​&#xff1a;若目录内文件属主为 mssql 且权限为 700&…...

UniApp页面路由详解

一、路由系统概述 1.1 路由机制原理 UniApp基于Vue.js实现了一套跨平台的路由管理系统&#xff0c;其核心原理是通过维护页面栈来管理应用内不同页面之间的跳转关系。在小程序端&#xff0c;UniApp的路由系统会映射到对应平台的原生导航机制&#xff1b;在H5端则基于HTML5 Hi…...

探索无人机模拟环境的多元景象及AI拓展

无人驾驶飞行器&#xff08;UAVs&#xff09;在各行各业的迅速普及&#xff0c;从农业和检测到空中操作和人机交互等令人兴奋的前沿领域&#xff0c;都引发了一个关键需求&#xff1a;强大而逼真的模拟环境。直接在物理硬件上测试尖端算法存在固有的风险——成本高昂的坠机、中…...

Java后端开发day39--方法引用

&#xff08;以下内容全部来自上述课程&#xff09; 1.1 含义 把已经有的方法拿过来用&#xff0c;当作函数式接口中抽象方法的方法体。 已经有的方法&#xff1a;可以是Java自己写的&#xff0c;也可以是第三方的。 示例语句&#xff1a; &#xff1a;&#xff1a;是方法引…...

C# 14 field keyword:属性简化新利器

引言 在 C# 的不断发展历程中&#xff0c;每一个新版本都带来了令人期待的新特性&#xff0c;而 C# 14 中的 field keyword 无疑是其中一颗璀璨的明星 。对于广大 C# 开发者来说&#xff0c;属性的使用频率极高&#xff0c;而 field keyword 的出现&#xff0c;为我们简化属性…...

破茧成蝶:一家传统制造企业的年轻化转型之路

2004 年&#xff0c;在长三角的轻工业重镇杭集&#xff0c;一家专注于植毛机器设备研发的小工厂悄然诞生。那时&#xff0c;它以 “齿轮与钢铁” 为语言&#xff0c;为全国近千家牙刷生产企业提供核心装备&#xff0c;用机械臂的精准律动&#xff0c;编织着传统制造业的经纬。然…...

【语法】C++的继承

目录 继承基本语法&#xff1a; protected访问限定符&#xff1a; 子类和父类之间的赋值兼容规则&#xff1a; 重定义(隐藏)&#xff1a; 继承中的友元/继承中的静态成员&#xff1a; 子类中的默认成员函数 构造函数/拷贝构造函数&#xff1a; 赋值重载函数&#xff…...

如何知道Ubuntu的端口是否被占用,被那个进程占用?如何终止进程

要检查Ubuntu系统中某个端口&#xff0c;比如5034&#xff0c;是否被占用及终止对应进程&#xff0c;请按以下步骤操作&#xff1a; 1. 检查端口占用情况 方法一&#xff1a;使用 lsof 命令 sudo lsof -i :5034输出结果会显示占用该端口的进程名、PID等信息。 方法二&#x…...

verdi使用tcl脚本批量添加波形

打开verdi console功能 在verdi的tools 里使能工具中的console功能; 在console执行tcl脚本 set cell_list { ts_0_lockup_latchn_clkc45_intno45811_i u_rst_scan_n_tp/u_scan_crl_reg/u_cell u_scan_crl_reg/u_cell u_scan_crl_reg/u_cell } ## specify the waveform window…...

【行业特化篇3】制造业简历优化指南:技术参数与标准化流程的关键词植入艺术

写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…...

oracle怎样通过固化较优执行计划来优化慢sql

一 问题描述 有次生产环境cpu使用率增高&#xff0c;ADDM报告提示某条sql比较耗费cpu&#xff1a; 提示&#xff1a; 在分析期间, 此 SQL 语句至少利用了 6 个不同的执行计划 #查看该sql都有哪些执行计划 SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR(sqlid值)); 我手动执…...

【无标题】好用的远程链接插件

现在在做后端开发有的时候需要链接到远程服务器,有很多插件看不到整体的目录结构 推荐 trae的 ssh Client 有很清晰的目录结构...

Plant Simulation MultiPortalCrane Store 小案例

一个天车从库区移动商品到指定地点的案例 库区商品&#xff1a;库区上随机位置摆放商品&#xff0c;在源上绑定方法&#xff08;应该也可以直接在库区上生成&#xff0c;我这里是使用源可以改变生成多少个商品&#xff09; // 源的self.OnExit var Store : object : 存储 var …...

MyBatis 使用 POJO 参数动态查询教程

项目结构概览&#xff08;基于图片描述&#xff09;&#xff1a; mybatis02 ├─ src/main/java │ └─ cn.cjxy │ ├─ domain # 实体类&#xff08;如 Emp.java&#xff09; │ ├─ mapper # Mapper 接口&#xff08;如 EmpMapper.java&#xff09; │…...

【MCP Node.js SDK 全栈进阶指南】高级篇(5):MCP之微服务架构

引言 在软件架构中,微服务模式已成为构建可扩展系统的主流方案。 将MCP与微服务架构结合,能够为AI驱动的应用带来显著优势。 本文将探讨如何在微服务环境中集成和部署MCP服务,以及如何利用云原生技术实现高可用、高性能的MCP应用。 目录 MCP在微服务中的角色服务网格集成容…...

UBUS 通信接口的使用——添加一个object对象(ubus call)

1&#xff0c;引入 ubus提供了一种多进程通信的机制。存在一个守护进程ubusd&#xff0c;所以进程都注册到ubusd&#xff0c;ubusd进行消息的接收、分发管理。 ubus对多线程支持的不好&#xff0c;例如在多个线程中去请求同一个服务&#xff0c;就有可能出现不可预知的结果。 …...

强化学习贝尔曼方程推导

引言 强化学习中贝尔曼方程的重要性就不说了&#xff0c;本文利用高中生都能看懂的数学知识推导贝尔曼方程。 回报 折扣回报 G t G_t Gt​的定义为&#xff1a; G t R t 1 γ R t 2 γ 2 R t 3 ⋯ ∑ k 0 ∞ γ k R t k 1 (1) G_t R_{t1} \gamma R_{t2} \gamm…...

【MCP Node.js SDK 全栈进阶指南】高级篇(2):MCP高性能服务优化

前言 随着MCP应用规模的扩大和用户量的增加,性能优化成为系统稳定运行的关键因素。高性能的MCP服务不仅能提供更好的用户体验,还能降低运营成本,提高系统的可扩展性。本文将深入探讨MCP TypeScript-SDK的性能优化策略,帮助开发者构建高效、稳定的MCP服务。 1. 性能瓶颈识…...

图片识别为提示词,背景信息提取 -从头设计数字生命第7课, demucs——仙盟创梦IDE

1. 图像内容理解与标注 用途&#xff1a;在大规模图像数据集的整理和标注工作中&#xff0c;通过特定提示词可引导图片识别系统更准确地提取图像中的背景信息&#xff0c;并进行标注。例如在医学图像库标注中&#xff0c;使用 “疾病相关背景特征” 作为提示词&#xff0c;系统…...

域对齐是什么

域对齐&#xff08;Domain Alignment&#xff09;是在机器学习和计算机视觉等领域中常用的技术 定义 域对齐旨在将不同域&#xff08;Domain&#xff09;的数据映射到一个共同的特征空间中&#xff0c;使得来自不同域的数据在该空间中具有相似的分布。这里的“域”可以指代不…...

opencv 直方图均衡化

直方图均衡化 1. 啥叫直方图2. 绘制直方图3. 直方图均衡化3.1 自适应直方图均衡化&#xff08;cv2.equalizeHist()&#xff09;3.2 对比度受限的自适应直方图均衡化(cv2.createCLAHE()) 1. 啥叫直方图 直方图是对数据进行统计的一种方法&#xff0c;并且将统计值组织到一系列实…...

JDK 8 函数式接口全集

JDK 8 函数式接口全集 函数式接口如何定义关于注解 FunctionalInterface 函数式接口的分类与简单使用生产型接口 Supplier使用 消费型接口 Consumer使用 ​​函数型接口&#xff08;Function&#xff09;​​实例(合并字符串) ​​断言型接口&#xff08;Predicate&#xff09;…...

网站防护无惧DDoS攻击:2025年实战指南

在数字化时代&#xff0c;DDoS攻击已成为企业生存的“生死线”。2024年全球日均攻击峰值突破5.4Tbps&#xff08;Cloudflare数据&#xff09;&#xff0c;电商、金融行业更是重灾区。本文将结合最新技术趋势和实战案例&#xff0c;为你提供一套低成本、高可靠的防御方案。 一、…...

【AI论文】BitNet v2:针对1位LLM的原生4位激活和哈达玛变换

摘要&#xff1a;激活异常值阻碍了1位大型语言模型&#xff08;LLM&#xff09;的有效部署&#xff0c;这使得低比特宽度的量化变得复杂。 我们介绍了BitNet v2&#xff0c;这是一个新的框架&#xff0c;支持1位LLM的原生4位激活量化。 为了解决注意力和前馈网络激活中的异常值…...