学习笔记—C++—类和对象(一)
目录
类和对象
类的定义
类定义格式
访问限定符
类域
实例化
实例化概念
对象的大小
this指针
C++和C语言实现Stack对比
类和对象
类的定义
类定义格式
● class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。
● 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。
● C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是
struct中可以定义函数,⼀般情况下我们还是推荐用class定义类。
● 定义在类⾯的成员函数默认为inline。
类和结构体最大的不同是类里面能定义函数。
类的定义——栈
#include<iostream>
#include<assert.h>
using namespace std;class stack
{
public:void Init(int n = 4)//缺省值默认给的是4{array = (int*)malloc(sizeof(int) * n);if (nullptr == array){perror("malloc申请空间失败");return;}capacity = n;top = 0;}void Push(int x){//扩容array[top++] = x;}int Top(){assert(top > 0);return array[top - 1];}void Destroy(){free(array);array = nullptr;top = capacity = 0;}
private://成员变量int* array;size_t top;size_t capacity;
};int main()
{stack st1;st1.Init();st1.Push(1);st1.Push(2);st1.Push(3);st1.Push(4);cout << st1.Top() << endl;st1.Destroy();return 0;
}
访问限定符
● C++⼀种实现封装的方式,用类将对象的属性与方法结合在⼀块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使⽤。
● public修饰的成员在类外可以直接被访问;protected和private修饰的成员在类外不能直接被访 问,protected和private是⼀样的,以后继承章节才能体现出他们的区别。
● 访问权限作用域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为止,如果后面没有访问限定符,作用域就到 }即类结束。
● class定义成员没有被访问限定符修饰时默认为private,struct默认为public。
● ⼀般成员变量都会被限制为private/protected,需要给别人使用的成员函数会放为public。
public(公有):公有成员可以在类的内部、派生类和类的外部访问。它们构成了类的公共接口,通常用于定义可以被外部直接访问和操作的方法和属性。
protected(受保护):受保护的成员只能在类的内部和派生类中访问,而不能在类的外部访问。它们用于实现基类和派生类之间的共享实现细节。
private(私有):私有成员只能在类的内部访问,外部无法直接访问。私有成员用于隐藏类的内部实现细节,防止外部代码直接访问和修改类的状态。
类域
● 类定义了⼀个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。
● 类域影响的是编译的查找规则,下面程序中Init如果不指定类域Stack,那么编译器就把Init当成全
局函数,那么编译时,找不到array等成员的声明/定义在哪里,就会报错。指定类域Stack,就是知
道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。
类的作用域由类名和作用域解析运算符(::)共同控制。
stack.h
#pragma once
#include<iostream>
#include<assert.h>
using namespace std;
class stack
{
public:void Init(int n = 4);
private:int* _a;int _top;int _capacity;
};
stack.cpp
#include"stack.h"
void stack::Init(int n)
{_a = (int*)mallol(sizeof(int) * n);if (_a == nullptr){perror("mallol申请空间失败");return;}_capacity = n;_top = 0;
}
test.cpp
#include"Stack.h"
int main()
{Stack st;st.Init();return 0;
}
实例化
实例化概念
● 用类类型在物理内存中创建对象的过程,称为类实例化出对象。
● 类是对象进行⼀种抽象描述,是⼀个模型⼀样的东西,限定了类有哪些成员变量,这些成员变量只是声明,没有分配空间,⽤类实例化出对象时,才会分配空间。
● ⼀个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。打个比方:类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,设计图规划了有多少个房间,房间大小功能等,但是并没有实体的建筑存在,也不能住人,用设计图修建出房子,房子才能住⼈。同样类就像设计图⼀样,不能存储数据,实例化出的对象分配物理内存存储数据。
类的实例化:指创建类的具体对象的过程。这个过程通常涉及到分配内存空间给新创建的对象,并设置其初始属性值。
#include<iostream>
using namespace std;class Data
{
public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout << _year << "/" << _month << "/" << _day << endl;}
private:int _year;int _month;int _day;
};int main()
{Data d1;//用类型定义出了个对象,这个对象里面有年月日这些数据//那么这种操作就是类实例化出对象Data d2;//1个类可以实例化出n个对象//创建出对象之后我们就能调用类中对应的方法d1.Init(2024, 11, 12);d2.Init(2023, 11, 12);d1.Print();d2.Print();return 0;
}
对象的大小
分析⼀下类对象中哪些成员呢?类实例化出的每个对象,都有独立的数据空间,所以对象中肯定包含 成员变量,那么成员函数是否包含呢?⾸先函数被编译后是⼀段指令,对象中没办法存储,这些指令 存储在⼀个单独的区域(代码段),那么对象中⾮要存储的话,只能是成员函数的指针。再分析⼀下,对 象中是否有存储指针的必要呢,Date实例化d1和d2两个对象,d1和d2都有各自独⽴的成员变量 year/month/_day存储各⾃的数据,但是d1和d2的成员函数Init/Print指针却是⼀样的,存储在对象 中就浪费了。如果⽤Date实例化100个对象,那么成员函数指针就重复存储100次,太浪费了。这里需 要再额外哆嗦⼀下,其实函数指针是不需要存储的,函数指针是⼀个地址,调⽤函数被编译成汇编指 令[call 地址],其实编译器在编译链接时,就要找到函数的地址,不是在运⾏时找,只有动态多态是在 运行时找,就需要存储函数地址。
class A{public:void Print(){cout << _ch << endl;}private:char _ch;int _i;};// 类中仅有成员函数 class B{public:void Print(){}};//类中什么都没有---空类class C{};
- sizeof(A) = 8
- sizeof(B) = 1
- sizeof(C) = 1
没有成员变量的类对象,开1byte,占位,不存储有效数据
this指针
● Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当d1调⽤Init和
Print函数时,该函数是如何知道应该访问的是d1对象还是d2对象呢?那么这⾥就要看到C++给了
⼀个隐含的this指针解决这⾥的问题
● 编译器编译后,类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针,叫做this 指针。比如Date类的Init的真实原型为, void Init(Date* const this, int year, int month, int day)
● 类的成员函数中访问成员变量,本质都是通过this指针访问的,如Init函数中给_year赋值, this-
>_year = year;
● C++规定不能在实参和形参的位置显示的写this指针(编译时编译器会处理),但是可以在函数体内显示使用this指针。
class Data
{
public://void Init(Data* this,int year, int month, int day)void Init(int year, int month, int day){_year = year;_month = month;_day = day;}//void Print(Data*this)void Print(){cout << _year << "/" << _month << "/" << _day<<endl;}private:int _year = 0;int _month = 0;int _day = 0;
};int main()
{Data d1;Data d2;//d1.Init(&d1,2024, 11, 12);d1.Init(2024, 11, 12);//d2.Init(&d2,2023, 11, 12);d2.Init(2023, 11, 12);//d1.Print(&d1);d1.Print();//d2.Print(&d2);d2.Print();return 0;
}
C++和C语言实现Stack对比
面向对象三大特性:封装、继承、多态
封装:是将对象的属性和方法结合在一起,并尽可能隐藏对象的内部细节,只暴露必要的接口供外部使用。
继承:允许一个类(子类)继承另一个类(父类)的属性和方法,实现代码的重用和层次化组织。
多态:允许使用相同的接口来处理不同类型的对象,具有不同的实现,增加了代码的灵活性和可扩展性.
相关文章:
学习笔记—C++—类和对象(一)
目录 类和对象 类的定义 类定义格式 访问限定符 类域 实例化 实例化概念 对象的大小 this指针 C和C语言实现Stack对比 类和对象 类的定义 类定义格式 ● class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后…...
PyTorch 深度学习 || 6. Transformer | Ch6.3 Transformer 简单案例
1. 简单案例 这个代码是一个简单的 Transformer 模型的实现,这个例子展示了一个基本的序列到序列(seq2seq)任务,比如将一个数字序列转换为另一个数字序列。可以用于学习和理解 Transformer 的基本结构和工作原理。 import torch import torch.nn as nn import math# 位置…...
体育风暴篮球足球体育球员综合资讯网站模板
源码名称:篮球足球体育球员综合资讯网站模板 开发环境:帝国cms7.5 空间支持:phpmysql 带软件采集,可以挂着自动采集发布,无需人工操作! 演示地址:https://www.52muban.com/shop/184016.html …...
Visual Studio Code SSH 连接超时对策( keep SSH alive)
文章目录 问题解决方法一:配置服务端关于ClientAliveInterval和ClientAliveCountMax1、打开终端,打开SSH配置文件:输入以下命令:2、打开配置文件后,添加以下内容:3、添加后,Esc按 <Enter>…...
Docker容器中的ubuntu apt update报错 解决办法
问题现象 # apt update Get:1 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB] Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB] Err:2 http://security.ubuntu.com/ubuntu noble-security InRelease At least one invalid signa…...
CV - 目标检测
物体检测 目标检测和图片分类的区别: 图像分类(Image Classification) 目的:图像分类的目的是识别出图像中主要物体的类别。它试图回答“图像是什么?”的问题。 输出:通常输出是一个标签或一组概率值&am…...
linux提权 corn 提权
corn提权 corn的基本使用方法 corn的作用就是可以定时的完成一下任务(如备份一下log 或者清除一下日志文件 这些就是运维人员用的) 先找一下定时任务的工作表 cat /bin/corntab 这个是普通用户 我们直接看都看不了 说明什么说明这个 是root高权限执…...
1Panel安装失败 国内docker安装失败
本文仅针对学习交流,只为了帮助计算机相关专业大学生个人技能实操而记录 非学习目的严禁学习!!!否则后果自负 1、离线安装1Panel(不需要手动安装docker,离线安装包里包括了docker) 离线包下载地…...
Excel + VBA 实现“准实时“数据的方法
Excel 本身是静态数据处理工具,但结合 VBA(Visual Basic for Applications) 可以实现 准实时数据更新,不过严格意义上的 实时数据(如毫秒级刷新)仍然受限。以下是详细分析: 1. Excel + VBA 实现“准实时”数据的方法 (1) 定时刷新(Timer 或 Application.OnTime) Appl…...
请问你怎么看待测试,指导哪些测试的类型,有用过哪些测试方法?
作为深耕测试领域多年的博主,我始终认为测试是软件质量的守护者,更是推动研发流程优化的催化剂。以下从测试认知、分类体系到实战方法论,结合具体案例为你系统拆解: 一、测试的本质认知 测试≠找 Bug,而是通过系统性验证回答三个核心问题: 软件是否符合用户需求?系统在…...
详解 Redis repl_backlog_buffer(如何判断增量同步)
一、repl_backlog_buffer 复制积压缓冲区(Replication Backlog Buffer) 是一个环形内存区域(Ring Buffer),用于临时保存主节点最近写入的写命令,以支持从节点断线重连后的增量同步。 1.1 三个复制偏移量 …...
工业操作系统国产化替代的战略路径与挑战分析
一、政策背景与战略意义 工信部提出的 2027 年替换 80 万套工业操作系统计划,是中国制造业向智能化转型的核心举措。该政策旨在通过国产化替代,解决工业领域 “缺芯少魂” 的问题,构建自主可控的工业软件生态体系。当前,中国工业操…...
JMeter接口性能测试从入门到精通
前言: 本文主要介绍了如何利用jmter进行接口的性能测试 1.在测试计划中添加线程组 1.1.线程组界面中元素含义 如果点击循环次数为永远: 2.添加HTTP取样器 2.1.填写登录接口的各个参数 2.2.在线程组下面增加查看结果树 请求成功的情况: 请求…...
WinForm真入门(9)——RichTextBox控件详解
WinForm中RichTextBox控件详解:从基础到高级应用 上一文中笔者重点介绍了TextBox控件的详细用法,忘记的 请点击WinForm真入门(8)——TextBox控件详解,那么本文中的RichTextBox与TextBox有什么区别吗,光看名字的话,多了…...
Linux : 内核中的信号捕捉
目录 一 前言 二 信号捕捉的方法 1.sigaction()编辑 2. sigaction() 使用 三 可重入函数 四 volatile 关键字 一 前言 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。在Linux: 进程信号初识-CSDN博客 这一篇中已经学习到了一种信号…...
Linux 字符串截取#与%
在Linux的Shell脚本中,#和%用于字符串截取,通过通配符模式匹配删除部分内容 批量修改文件名技巧:Linux下#、##、%、%%符号操作详解-CSDN博客 从左截取(# 和 ##) #:删除最短匹配左侧内容。 ##:…...
Android学习总结之自定义View实战篇
场景一:自定义进度条 在很多应用中,我们会看到一些独特样式的进度条,接下来就实现一个简单的圆形进度条。 实现思路 继承 View 类。重写 onDraw 方法,在该方法里使用 Canvas 和 Paint 来绘制圆形进度条。提供更新进度的方法。 …...
C++ STL 详解 ——list 的深度解析与实践指南
在 C 的标准模板库(STL)中,list作为一种重要的序列式容器,以其独特的双向链表结构和丰富的操作功能,在许多编程场景下发挥着关键作用。深入理解list的特性与使用方法,能帮助开发者编写出更高效、灵活的代码…...
open函数的概念和使用案例
open 是 Linux/Unix 系统中用于打开或创建文件的系统调用,返回一个文件描述符(File Descriptor),后续可通过该描述符进行文件读写等操作。以下是其核心概念和使用案例的详细说明: 1. 核心概念 作用:打开或…...
整理一些大模型部署相关的知识
不一定有什么用, 不经常用还会忘掉. 之前被人问到一次,脑子卡壳回答不出要点, 非常尴尬! 在此记录一下使用心得, 偶尔回来翻看! 一 并行方式 1.1 数据并行 (Data Parallelism) 主要用于模型训练阶段, 即将多个完整的模型副本分布到多个gpu上, 每个gpu运行一部分数据数据, 每个…...
算法刷题记录——LeetCode篇(2.10) [第191~200题](持续更新)
更新时间:2025-04-04 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 198. 打家劫舍 你是一个专业的…...
蓝桥杯备赛 Day 19 加练dfs
是否需要回溯? 输入参数有哪几个(当前dfs和下一个dfs什么会变?)? 是否需要返回值? 一.1158: 八皇后 P1158 - 八皇后 - New Online Judge (ecustacm.cn) 学习: 1.dfs输入为层数,即行号i,因为是每行只放一个,下一个dfs就是i1 2…...
蓝桥杯-卡java排序
问题描述 本题是一道针对 Java 中 Arrays.sort 的题目,因此只有一个数据,该数据可以把 int 类型的数组在使用 Arrays.sort 后卡成 O(n2)O(n2)。 给定一个有 nn 个正整数的序列 aa,你需要将其升序排序后输出。 输入格式 第一行输入一个正整…...
内存管理模块
在 Linux 内核中,内存管理是一个复杂而关键的组成部分。内核空间的虚拟地址被划分为多个区域,每个区域有其特定的用途和映射机制。本文将详细介绍 直接映射区(Direct Mapping Area)、vmalloc 区、永久内核映射区(Perma…...
Spring RestTemplate修仙指南:从HTTP萌新到请求大能的终极奥义
各位在Spring生态摸爬滚打的道友们!今天要解锁的是Spring官方御用HTTP法宝——RestTemplate!这货堪称Java界的"御剑飞行术",虽然官方已推荐WebClient接棒,但江湖上仍有80%项目在用这员老将!准备好一键起飞了…...
cpp经典数论问题
题目如下 思路 代码如下...
Redis 线程模型:单线程也能快如闪电?
目录 一、核心思想:快刀斩乱麻的“单线程”高手 🦸♂️二、为什么是“单线程”?🤔三、单线程如何做到高性能?✨ “I/O 多路复用”是关键!四、真的一直都只有“一个线程”吗?并不完全是&#x…...
游戏引擎学习第208天
运行游戏并回顾我们的情况 今天,我们将继续完成之前中断的调试输出工作。最近的工作偏离了一些,展示了如何进行元编程的实践,主要涉及了一个小的解析器。尽管这个解析器本身是一个玩具,但它展示了如何完成一个完整的循环…...
JavaScript箭头函数介绍(=>)(箭头函数不绑定自己的this,而是继承上下文的this;不能用于造函数)JavaScript =>
文章目录 JavaScript箭头函数全解析箭头函数的基本语法简洁语法特性隐式返回值对象字面量返回 词法绑定的this不适用箭头函数的场景对象方法构造函数DOM事件处理 高级用法在数组方法中的应用链式调用柯里化函数 性能考量1. 作为回调函数时减少创建闭包的开销2. 简化代码结构&am…...
数据对象:DTO、DO、PO和 BO的区别和关系
在Java开发中,DTO(Data Transfer Object)、DO(Domain Object)、PO(Persistent Object)和BO(Business Object)是常用的数据对象概念,下面为你详细介绍并给出简…...
Java内存模型详解:堆、栈、方法区
1. 堆(Heap) 作用:存放所有对象实例及数组,是垃圾回收的主要区域。 结构: 新生代(Young Generation): Eden区:新创建的对象首先分配在此。 Survivor区(From…...
ubuntu 20.04 编译运行LeGo_LOAM 跑数据集 并且保存pcl文件
1.搭建文件目录,clone代码,编译 mkdir -p Lego_LOAM/src cd Lego_LOAM/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git cd .. catkin_make -j1 错误1:: fatal error: opencv/cv.h: 没有那个文件或目录 13 | #include <opencv/cv.h…...
CMake使用教程
CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。 使用命令行执行CMakeLists.txt,对文件进…...
快速上手Linux进程管理
一.理解进程和线程 1.1 什么是进程 它表示一个正在执行的程序实例。在操作系统中,进程是系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间、代码、数据和系统资源,如打开的文件、使用的硬件设备等。 进程的主要特点包括:…...
pytorch框架实现cnn四种天气图片多分类问题-添加dropout和bn层
目录 1.导包 2.加载数据、拼接训练、测试文件夹 3. 查看当前目录下的所有文件名,以列表的形式输出 4.原数据集dataset中存在的数据的目标类别 5.创建train和test目录 及其需要分类的子文件夹 6.使用torchvision 的transforms进行数据预处理 6.1数据统一缩放resize、To…...
swift-11-init、deinit、可选链、协议、元类型
一、required 二、属性观察器 三、可失败初始化器 可以用init!定义隐式解包的可失败初始化器 可失败初始化器可以调用非可失败初始化器,非可失败初始化器调用可失败初始化器需要进行解包 如果初始化器调用一个可失败初始化器导致初始化失败 ,那么整个初…...
【力扣hot100题】(062)搜索插入位置
感觉自己对二分法还是没有很好掌握,主要在于边界问题,只会基本的搜索,如果要搜索比目标值大的第一个索引或者比目标值小的最后一个索引(或者换一些花里胡哨的题目)就完全不会了。 class Solution { public:int search…...
TCPIP详解 卷1协议 三 链路层
3.1——以太网和IEEE802局域网/城域网标准 以太网这个术语通常指一套标准,由DEC,Intel公司和Xerox公司在1980年首次发布,并在1982年加以修订。第一个常见格式的以太网,目前被称为10Mb/s以太网或共享以太网。它被IEEE采纳为802.3标…...
以太网安全
前言: 端口隔离可实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中,就可以实现隔离组内端口之间的二层数据的隔离端口安全是一种在交换机接入层实施的安全机制,旨在通过控制端口的MAC地址学习行为,确保仅授权设备能…...
linux如何查看当前系统的资源占用情况
在 Linux 系统中,有多个命令可以查看当前系统的资源占用情况。以下是一些常用的命令及其说明: 1. 查看内存使用情况:free free -h-h 参数表示以人类可读的格式显示(如 MB, GB)。输出示例: to…...
人脸识别系统(人脸识别、前后端交互、Python项目)
基于Flask、Face_Recognition的人脸识别系统 项目介绍 基于flask、face_recognition的人脸识别系统。 本项目采用Face_Recognition库内置的ResNet-34预训练模型,其已对LFW公开数据集进行预训练而得到的模型。利用ResNet-34预训练模型,可使用少量已知人…...
2025 ArkTS语言开发入门之前言(二)
2025 ArkTS语言开发入门之前言(二) 前言 在上一节,咱们学习了如何下载并安装ArkTS的集成开发环境,这时候有的臭宝会发现,左边的这些叽里咕噜的是什么?下面,我来带着臭宝们来学习一下这些是什么…...
VLAN(虚拟局域网)
一、vlan概述 VLAN(virtual local area network)是一种通过逻辑方式划分网络的技术,允许将一个物理网络划分为多个独立的虚拟网络。每一个vlan是一个广播域,不同vlan之间的通信需要通过路由器或三层交换机 [!注意] vlan是交换机独有的技术,P…...
2025.4.6总结
今日记录:今天玩的有些累,先是去护肤店护理了脸部,然后去汉口江滩那看了看美景,吹吹江风。节假日去玩,光是挤一个半小时地铁都感觉累。还好上下班期间不用挤地铁,不然还真受不了。 假期小结 1.消费&#…...
【清明折柳】写在扬马三周目后
黄绿之间,方寸之外。 文章目录 楔子解耦到离散螃蟹与毒药文本的力量朝花夕拾后记 楔子 “——就像物理学家通过演绎与归纳将宏微世界的运转规律浓缩到数学公式中时,如今的人工智能也在试图量化整个人类文明。” “——只是,使用的是昂贵、笨…...
P1258 小车问题(二分)
题目描述 甲、乙两人同时从 A 地出发要尽快同时赶到 B 地。出发时 A 地有一辆小车,可是这辆小车除了驾驶员外只能带一人。已知甲、乙两人的步行速度一样,且小于车的速度。问:怎样利用小车才能使两人尽快同时到达。 输入格式 仅一行&#x…...
一个基于ragflow的工业文档智能解析和问答系统
工业复杂文档解析系统 一个基于ragflow的工业文档智能解析和问答系统,支持多种文档格式的解析、知识库管理和智能问答功能。 系统功能 1. 文档管理 支持多种格式文档上传(PDF、Word、Excel、PPT、图片等)文档自动解析和分块处理实时处理进度显示文档解析结果预览批量文档…...
负指数二项式展开
转载:负指数二项式展开_二项式负数次幂的展开式-CSDN博客...
CentOS 7服务器上快速安装mamba函数库
本次预配置虚拟环境为cuda 11.8torch 2.2.2python 3.10 1. 创建conda虚拟环境:conda create -n mamba python3.10 激活环境:conda activate mamba 2. 安装Pytorch环境: conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 py…...
ResNet改进(18):添加 CPCA通道先验卷积注意力机制
1. CPCA 模块 CPCA(Channel Prior Convolutional Attention)是一种结合通道先验信息的卷积注意力机制,旨在通过显式建模通道间关系来增强特征表示能力。 核心思想 CPCA的核心思想是将通道注意力机制与卷积操作相结合,同时引入通道先验知识,通过以下方式优化特征学习: 通…...