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

C++基础精讲-06

文章目录

  • 1. this指针
    • 1.1 this指针的概念
    • 1.2 this指针的使用
  • 2. 特殊的数据成员
    • 2.1 常量数据成员
    • 2.2 引用数据成员
    • 2.3 静态数据成员
    • 2.4 对象成员
  • 3. 特殊的成员函数
    • 3.1 静态成员函数
    • 3.2 const成员函数
    • 3.3 mutable关键字


1. this指针

1.1 this指针的概念

1.c++规定,this指针是隐含在对象成员函数内的一种指针。当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含指针this,用以保存这个对象的地址。

2.this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象都拥有自己的函数成员。一般情况下,并不写this,而是让系统进行默认设置。

3.本质:this指针的本质是一个常量指针 Type* const pointer; 它储存了调用它的对象的地址,不可被修改

3.注意:

(1)this指针永远指向当前对象。
(2)静态成员函数内部没有this指针,静态成员函数不能操作非静态成员变量。

//this:是指向当前对象的指针
//当前对象:谁调用这个函数,this指向谁;
//大多数情况下,this可以不写;
class Person
{
public://构造函数Person():_age(0){}Person(int age):_age(age){}int  getAge(){return this->_age;}private:int _age;
};int main(void)
{Person p1(10);cout << p1.getAge() << endl;Person p2(20);cout << p2.getAge() << endl;return 0;
}

1.2 this指针的使用

1.当形参和成员变量同名时,可用this指针来区分

#include <iostream>
#include <cstring>namespace myspace1
{using std::endl;using std::cout;using std::cin;using std::string;
}using namespace myspace1;//this:是指向当前对象的指针
//当前对象:谁调用这个函数,this指向谁;
//大多数情况下,this可以不写;//使用
//1.当形参和成员变量同名时,可用this指针来区分class Person
{
public://构造函数Person():_age(0){}Person(int age):_age(age){}int  getAge(){return this->_age;}void setAge(int _age){_age = _age;}private:int _age;
};int main(void)
{Person p1(10);cout << p1.getAge() << endl;p1.setAge(20);cout << p1.getAge() << endl;return 0;
}

在这里插入图片描述
可以看到,通过p1.setAge(20);并没有设置成功age的值;

void setAge(int _age)
{this->_age = _age;
}

在这里插入图片描述
通过this指针,就可以修改了;

2.在类的非静态成员函数中返回对象本身,可使用return * this.

#include <iostream>
#include <cstring>namespace myspace1
{using std::endl;using std::cout;using std::cin;using std::string;
}using namespace myspace1;//this:是指向当前对象的指针
//当前对象:谁调用这个函数,this指向谁;
//大多数情况下,this可以不写;//使用
//1.当形参和成员变量同名时,可用this指针来区分
//2.在类的非静态成员函数中返回对象本身,可使用return * thisclass Person
{
public://构造函数Person() :_age(0) {}Person(int age) :_age(age) {}//设置一个函数,累加上一个数字,返回对象本身Person& add(int age){this->_age += age;//返回当前对象的引用return *this;}void print(){cout << this->_age << endl;}private:int _age;
};int main(void)
{Person p1;//每一次的函数调用,得到了自己(p1);p1.add(10).add(20);//链式调用p1.print();return 0;
}

2. 特殊的数据成员

2.1 常量数据成员

当数据成员用 const 关键字进行修饰以后,就成为常量成员。一经初始化,该数据成员便具有“只读属性”,在程序中无法对其值修改(C++11之后也允许在声明时就初始化)。

#include <iostream>
#include <cstring>namespace myspace1
{using std::endl;using std::cout;using std::cin;using std::string;
}using namespace myspace1;class Poin
{
public://构造函数Poin(int x, int y) :_x(x), _y(y)    //使用初始化列表来初始const数据成员{//错误,严格来说,这是赋值操作;/*_x = x;_y = y;*/}void print(){cout << "x=" << _x << endl;cout << "y=" << _y << endl;}private:const int _x;const int _y;//c++11允许在声明时,给默认值/*const int _x = 1;const int _y = 2;*/
};void test(void)
{Poin p1(10, 20);p1.print();//可以拷贝构造,但是不可以进行赋值操作;Poin p2 = p1;
}int main(void)
{test();return 0;
}

2.2 引用数据成员

#include <iostream>
#include <cstring>namespace myspace1
{using std::endl;using std::cout;using std::cin;using std::string;
}using namespace myspace1;//int z=10;class Poin
{
public://构造函数//z的生命周期不够长,_z是其他值;//解决办法//1.将z定义为全局变量//2.在定义时_z就绑定初值Poin(int x, int y,int z) :_x(x), _y(y),_z(z){}void print(){cout << "x=" << _x << endl;cout << "y=" << _y << endl;cout << "z=" << _z << endl;}private:int _x;int _y;int& _z;//int &z=z;   c++11标准};void test(void)
{Poin p1(1, 2, 3);p1.print();
}int main(void)
{test();return 0;
}

2.3 静态数据成员

1.概念:
在一个类中,若将一个成员变量声明为static,这种成员称为静态成员变量。与一般的数据成员不同,无论建立了多少个对象,都只有一个静态数据的拷贝。静态成员变量,属于某个类,所有对象共享。
静态变量,是在编译阶段就分配空间,对象还没有创建时,就已经分配空间。
2.定义静态数据成员

class Pint {
public:static int n; // 声明静态数据成员
};

3.初始化静态数据成员

class Pint {
public:static int n; // 声明静态数据成员
};// 在类外初始化静态数据成员
int Pint::n = 10;void test(void)
{cout << "n= " << Pint::n << endl;
}int main(void)
{test();return 0;
}

4.访问静态数据成员

class Pint {
public:static int n; // 声明静态数据成员
};// 在类外初始化静态数据成员
int Pint::n = 10;void test(void)
{// 通过类名访问静态数据成员cout << "n=" << Pint::n << endl;// 通过对象访问静态数据成员Pint p1;cout << "n=" << p1.n << endl;
}

5.使用场景
(1)共享数据:当多个对象需要共享某个数据时,可以使用静态数据成员。例如,统计类的对象创建的数量。
(2)常量数据:如果类中有一些常量数据,并且希望所有对象都能访问这些常量,可以将其定义为静态数据成员。

2.4 对象成员

1.概念:
C++ 里,对象成员指的是一个类将其他类的对象作为自身的数据成员。借助这种方式,能够构建复杂的类结构,达成代码的复用与模块化设计。

#include <iostream>
#include <cstring>namespace myspace1
{using std::endl;using std::cout;using std::cin;using std::string;
}using namespace myspace1;//汽车类
class Car
{
public://构造函数Car():_color(new char[strlen("白色")+1]),_price(0) {strcpy(_color, "白色");cout << "Car无参构造函数" << endl;}Car(const char *color,int price):_color(new char[strlen(color) + 1]), _price(0){strcpy(_color, color);cout << "Car有参构造函数" << endl;}//析构函数~Car(){if (_color != nullptr){delete[] _color;cout << "析构函数" << endl;}}//写void set(const char* color,int price){strcpy(_color, color);_price = price;}//打印void print(){cout << "color=" << _color << endl;cout << "pice=" << _price << endl;}private:char* _color;int _price;
};//人类
class Person
{
public://构造函数Person():_age(0){cout << "Person无参构造函数" << endl;}Person(int age):_age(age){cout << "Person有参构造函数" << endl;}void setAge(int age){_age = age;}void printPerson(){cout << "age=" << _age << endl;_c.print();}void setCar(const char* color, int price){_c.set(color, price);}private:Car _c;int _age;
};void test()
{//Person 类的构造函数会先对其对象成员进行初始化,之后才执行自身构造函数体里的代码;Person p1(20);p1.setCar("黑色",20000);  //设置车辆信息p1.setAge(28);         //设置年龄p1.printPerson();}int main(void)
{test();return 0;
}

在这里插入图片描述

3. 特殊的成员函数

3.1 静态成员函数

1.概念:
在 C++ 中,静态成员函数是属于类而不是类的某个对象的成员函数。与普通成员函数不同,静态成员函数不依赖于特定的对象实例,它可以在没有创建任何对象的情况下被调用。
2.定义静态成员函数

//汽车类
class Car
{
public://静态成员函数static void fun(void);
private:char* _color;int _price;
};

3.类外实现静态成员函数

//汽车类
class Car
{
public://静态成员函数static void fun(void);
private:char* _color;int _price;
};
void Car::fun(void)
{cout << "我是静态成员函数" << endl;
}

4.调用静态成员函数
静态成员函数可以通过类名直接调用,也可以通过类的对象调用

//汽车类
class Car
{
public://静态成员函数static void fun(void);
private:char* _color;int _price;
};
void Car::fun(void)
{cout << "我是静态成员函数" << endl;
}void test()
{//通过类名调用Car::fun();//通过对象调用Car c1;c1.fun();
}int main(void)
{test();return 0;
}

5.使用场景
(1)工具函数:当一些函数与类的对象状态无关,只是提供一些通用的功能时,可以将其定义为静态成员函数。
(2)管理类的静态数据成员:当需要对类的静态数据成员进行操作时,可以使用静态成员函数。例如,统计类的对象创建的数量,使用静态成员函数来获取或修改这个统计值。

6.总结
(1)静态成员函数不依赖于某一个对象;

(2)静态成员函数可以通过对象调用,但更常见的方式是通过类名加上作用域限定符调用

(3)静态成员函数没有this指针;

(4)静态成员函数中无法直接访问非静态的成员,只能访问静态数据成员或调用静态成员函数(因为没有this指针)。
(5)构造函数、拷贝构造、赋值运算符函数、析构函数比较特殊,可以在静态成员函数中调用。

3.2 const成员函数

1.概念
在 C++ 里,const 成员函数是一种特殊的成员函数,它承诺不会修改调用该函数的对象的状态
2.定义与语法

class Point {
private:int value;
public:Point(int val) : value(val) {}// 声明 const 成员函数int getValue() const;
};// 定义 const 成员函数
//该函数内部不能修改对象的任何非静态数据成员。
int Point::getValue() const {return value;
}int main() {const Point p1(10);cout << "Value: " <<p1.getValue() << endl;return 0;
}

3.使用场景
(1)访问器函数:当成员函数的主要目的是获取对象的某个属性值,而不修改对象的状态时,通常将其声明为 const 成员函数。
(2)在 const 对象上调用:如果你有一个 const 对象,那么只能调用该对象的 const 成员函数。因此,为了让 const 对象也能正常使用类的功能,需要将一些不修改对象状态的成员函数声明为 const 成员函数。

4.总结
(1)const 成员函数内部不能修改非静态数据成员
(2)const 成员函数和非 const 成员函数可以重载

3.3 mutable关键字

在 C++ 中,mutable 是一个关键字,它主要用于修饰类的数据成员。当一个数据成员被声明为 mutable 时,意味着即使在 const 成员函数中,该数据成员也可以被修改

class Point {
private:mutable int _value;
public:Point(int val) : _value(val) {}// 声明 const 成员函数int getValue() const;
};// 定义 const 成员函数
int Point::getValue() const {//可以被修改_value = 100;return _value;
}int main() {const Point p1(10);cout << "Value: " <<p1.getValue() << endl;return 0;
}

在这里插入图片描述

相关文章:

C++基础精讲-06

文章目录 1. this指针1.1 this指针的概念1.2 this指针的使用 2. 特殊的数据成员2.1 常量数据成员2.2 引用数据成员2.3 静态数据成员2.4 对象成员 3. 特殊的成员函数3.1 静态成员函数3.2 const成员函数3.3 mutable关键字 1. this指针 1.1 this指针的概念 1.c规定&#xff0c;t…...

Django3 - 建站基础

学习开发网站必须了解网站的组成部分、网站类型、运行原理和开发流程。使用Django开发网站必须掌握Django的基本操作&#xff0c;比如创建项目、使用Django的操作指令以及开发过程中的调试方法。 一、网站的定义及组成 网站(Website)是指在因特网上根据一定的规则&#xff0c;…...

UE5蓝图设置界面尺寸大小

UE5蓝图设置界面尺寸大小 Create widget 创建UIadd to Viewport 添加视图get Game User Settings获取游戏用户设置set Screen Resolutions 设置屏幕尺寸大小1920*1080set Fullscreen Mode 设置全屏模式为&#xff1a;窗口化或者全屏Apply Settings 应用设置...

无数字字母RCE

无数字字母RCE&#xff0c;这是一个老生常谈的问题&#xff0c;就是不利用数字和字母构造出webshell&#xff0c;从而能够执行我们的命令。 <?php highlight_file(__FILE__); $code $_GET[code]; if(preg_match("/[A-Za-z0-9]/",$code)){die("hacker!&quo…...

AutoGen参数说明

UserProxyAgent用户 user_proxy = UserProxyAgent配置说明: # 构造参数 def __init__(self,name: str,is_termination_msg: Optional[Callable[[Dict], bool]] = None,max_consecutive_auto_reply: Optional[int] = None,human_input_mode: Literal["ALWAYS", &qu…...

6.2 GitHub API接口设计实战:突破限流+智能缓存实现10K+仓库同步

GitHub Sentinel 定期更新 API 接口设计 关键词:GitHub API 集成、异步爬虫开发、RESTful 接口设计、请求限流策略、数据增量更新 1. 接口架构设计原则 采用 分层隔离架构 实现数据采集与业务逻辑解耦: #mermaid-svg-WihvC78J0F5oGDbs {font-family:"trebuchet ms&quo…...

用java代码如何存取数据库的blob字段

一.业务 在业务中我们被要求将文件或图片等转成 byte[] 或 InputStream存到数据库的Blob类型的字段中. 二.Blob类型介绍 在 MySQL 中&#xff0c;Blob 数据类型用于存储二进制数据。MySQL 提供了四种不同的 Blob 类型&#xff1a; TINYBLOB: 最大存储长度为 255 个字节。BL…...

2025蓝桥杯C++研究生组真题-上海市省赛

2025蓝桥杯C研究生组真题 A&#xff1a;数位倍数&#xff08;5分&#xff09; 问题描述&#xff1a;请问在 1 至 202504&#xff08;含&#xff09;中&#xff0c;有多少个数的各个数位之和是 5 的整数倍。例如&#xff1a;5、19、8025 都是这样的数。 A是填空题&#xff0c…...

原子操作CAS(Compare-And-Swap)和锁

目录 原子操作 优缺点 锁 互斥锁&#xff08;Mutex&#xff09; 自旋锁&#xff08;Spin Lock&#xff09; 原子性 单核单CPU 多核多CPU 存储体系结构 缓存一致性 写传播&#xff08;Write Propagation&#xff09; 事务串行化&#xff08;Transaction Serialization&#…...

Aspose.Words导出word,服务器用内存流处理,不生成磁盘文件

框架集&#xff1a;.NET8 public async Task<IActionResult> ExportPDF(long? id) {var infoawait form_Dahui_ReportDao.GetAsync(id);if (info null){return Content("没找到数据");}//读取word模板string fileTemp Path.Combine(AppContext.BaseDirect…...

攻防世界——Web题ez_curl

目录 Express PHP和Node.js的解析差异 Python代码 这道题最终得不到flag&#xff0c;用了很多师傅的代码也不成功。但还是需要学习 下载的附件&#xff1a; const express require(express);const app express();const port 3000; const flag process.env.flag;app.ge…...

力扣面试150题--螺旋矩阵

Day 20 题目描述 思路 根据题目描述&#xff0c;我们需要顺时针输出矩阵元素&#xff0c;顺时针说明有四种输出状态&#xff0c;横向从左到右和从右到左&#xff0c;纵向从上到下和从下到上&#xff0c;唯一的难点在于&#xff0c;输出完成一层后&#xff0c;如何进入内层&am…...

智能指针之设计模式2

前面介绍了工厂模式控制了智能指针和资源对象的创建过程&#xff0c;现在介绍一下智能指针是如何利用代理模式来实现“类指针&#xff08;like-pointer&#xff09;”的功能&#xff0c;并控制资源对象的销毁过程的。 2、代理模式 代理模式是为其它对象提供一种代理以控制对这…...

【Redis】redis持久化

Redis 持久化 Redis&#xff1a;非关系型的内存数据库 持久化&#xff1a;将数据永久写入磁盘&#xff08;内存→磁盘&#xff09; Redis 默认开启了持久化&#xff0c;默认模式为 RDB 为什么需要持久化&#xff1f; Redis 是内存数据库&#xff0c;宕机或关机后数据会丢失。…...

AtCoder Beginner Contest 401 E题 题解

E - Reachable Sethttp://E - Reachable Set 题意概述 &#xff1a; 给定一个无向图&#xff0c; 对于每个 &#xff0c;解决以下问题&#xff1a; -选择最少的一些顶点&#xff0c;使得删除这些顶点及其关联的所有边后 点1只能到达以内的所有点 牵制芝士 &#xff1a;头文…...

Kubernetes控制平面组件:API Server Webhook 授权机制 详解

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…...

【CodeMirror】系列(二)官网示例(六)自动补全、边栏

一、自动补全 codemirror/autocomplete 包提供了在编辑器中显示输入建议的功能。这个示例展示了如何启用该功能以及如何编写自己的补全来源。 自动补全是通过在编辑器的配置项中加入 autocompletion 扩展实现的。有些语言包支持内置的自动补全功能&#xff0c;比如HTML包。 默…...

CSS 表格样式学习笔记

CSS 提供了强大的工具来美化和定制 HTML 表格的外观。通过合理使用 CSS 属性&#xff0c;可以使表格更加美观、易读且功能强大。以下是对 CSS 表格样式的详细学习笔记。 一、表格边框 1. 单独边框 默认情况下&#xff0c;表格的 <table>、<th> 和 <td> 元…...

简单记录一下Android四大组件

1、Android Layout 1.1、LinearLayout 线性布局&#xff0c;子控件按照水平或垂直的方向依次排列&#xff0c;排列方向通过属性android:orientation控制&#xff0c;horizontal为水平排列&#xff0c;vertical为垂直排列。对于同一水平线上的控件&#xff0c;可以调整它的lay…...

在线地图支持天地图和腾讯地图,仪表板和数据大屏支持发布功能,DataEase开源BI工具v2.10.7 LTS版本发布

2025年4月11日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10.7 LTS版本。 这一版本的功能变动包括&#xff1a;数据源方面&#xff0c;Oracle数据源支持获取和查询物化视图&#xff1b;图表方面&#xff0c;在线地图支持天地图、腾讯地图&#xff1b;新增子弹图&…...

【图像处理基石】什么是通透感?

一、画面的通透感定义 画面的通透感指图像在色彩鲜明度、空间层次感、物体轮廓清晰度三方面的综合表现&#xff0c;具体表现为&#xff1a; 色彩鲜明&#xff1a;颜色纯净且饱和度适中&#xff0c;无灰暗或浑浊感&#xff1b;层次分明&#xff1a;明暗过渡自然&#xff0c;光…...

猫咪如厕检测与分类识别系统系列【六】分类模型训练+混合检测分类+未知目标自动更新

前情提要 家里养了三只猫咪&#xff0c;其中一只布偶猫经常出入厕所。但因为平时忙于学业&#xff0c;没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关&#xff0c;频繁如厕可能是泌尿问题&#xff0c;停留过久也可能是便秘或不适。为了更科学地了解牠的如…...

NoSQL入门指南:Redis与MongoDB的Java实战

一、为什么需要NoSQL&#xff1f; 在传统SQL数据库中&#xff0c;数据必须严格遵循预定义的表结构&#xff0c;就像把所有物品整齐摆放在固定尺寸的货架上。而NoSQL&#xff08;Not Only SQL&#xff09;数据库则像一个灵活的储物间&#xff0c;允许存储各种类型的数据&#x…...

游戏引擎学习第223天

回顾 今天我们正在进行过场动画序列的制作&#xff0c;因此我想深入探讨这个部分。昨天&#xff0c;我们暂时停止了过场动画的制作&#xff0c;距离最终结局还有一些内容没有完成。今天的目标是继续完成这些内容。 我们已经制作了一个过场动画的系列&#xff0c;并把它们集中…...

【redis进阶二】分布式系统之主从复制结构(1)

目录 一 为什么要有分布式系统&#xff1f; 二 分布式系统涉及到的非常关键的问题&#xff1a;单点问题 三 学习部署主从结构的redis (1)创建一个目录 (2)进入目录拷贝两份原有redis (3)使用vim修改几个选项 (4)启动两个从节点服务器 (5)建立复制&#xff0c;要想配…...

(自用)若依生成左树右表

第一步&#xff1a; 在数据库创建树表和单表&#xff1a; SQL命令&#xff1a; 商品表 CREATE TABLE products (product_id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255) , price DECIMAL(10, 2) , stock INT NOT NULL, category_id INT NOT NULL); 商品分类…...

VectorBT量化入门系列:第六章 VectorBT实战案例:机器学习预测策略

VectorBT量化入门系列&#xff1a;第六章 VectorBT实战案例&#xff1a;机器学习预测策略 本教程专为中高级开发者设计&#xff0c;系统讲解VectorBT技术在量化交易中的应用。通过结合Tushare数据源和TA-Lib技术指标&#xff0c;深度探索策略开发、回测优化与风险评估的核心方法…...

5G网络下客户端数据业务掉线频繁

MCPTT&#xff08;Mission Critical Push-to-Talk&#xff09;客户端的日志&#xff0c;和界面在待机状态下&#xff08;即没有做通话等业务操作&#xff09;&#xff0c;会频繁提示“离线”。 主要先看有没有丢网&#xff0c;UL BLER有没有问题。确认没有问题。看到业务信道释…...

CPU(中央处理器)

一、CPU的定义与核心作用 CPU 是计算机的核心部件&#xff0c;负责 解释并执行指令、协调各硬件资源 以及 完成数据处理&#xff0c;其性能直接影响计算机的整体效率。 核心功能&#xff1a; 从内存中读取指令并译码。执行算术逻辑运算。控制数据在寄存器、内存和I/O设备间的…...

Java从入门到“放弃”(精通)之旅——程序逻辑控制④

Java从入门到“放弃”&#xff08;精通&#xff09;之旅&#x1f680;&#xff1a;程序逻辑的完美理解 一、开篇&#xff1a;程序员的"人生选择" 曾经的我&#xff0c;生活就像一段顺序执行的代码&#xff1a; System.out.println("早上8:00起床"); Syste…...

[Dify] 基于明道云实现金融业务中的Confirmation生成功能

在金融业务的日常流程中,交易记录的处理不仅涉及数据录入、流程审批,更重要的是其最终输出形式——交易确认函(Confirmation)。本文将介绍如何通过明道云的打印模板功能,快速、准确地生成符合业务需求的交易Confirmation,提升工作效率与合规性。 为什么需要Confirmation?…...

Qt安卓设备上怎么安装两个不同的Qt应用?

在安卓设备上安装两个不同的Qt应用时&#xff0c;需要确保这两个应用在安卓系统中被视为独立的应用程序。以下是详细的步骤和注意事项&#xff0c;帮助你实现这一目标&#xff1a; 一、修改应用的包名 安卓系统通过应用的包名&#xff08;package属性&#xff09;来区分不同的…...

Prompt工程提示词(1-6章)

White graces&#xff1a;个人主页 &#x1f439;今日诗词:怅望千秋一洒泪&#xff0c;萧条异代不同时&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; 目录 &#x1f680; 第…...

0基础 | 硬件滤波 C、RC、LC、π型

一、滤波概念 &#xff08;一&#xff09;滤波定义 滤波是将信号中特定波段频率滤除的操作&#xff0c;是抑制和防止干扰的重要措施。通过滤波器实现对特定频率成分的筛选&#xff0c;确保目标信号的纯净度&#xff0c;提升系统稳定性。 &#xff08;二&#xff09;滤波器分…...

C++ 编程指南34 - C++ 中 ABI 不兼容的典型情形

一:概述 ABI(Application Binary Interface)是二进制层面的接口规范。如果一个库的 ABI 发生了变化,那么基于旧 ABI 编译的代码可能在运行时与新库不兼容(即使接口名字都一样也不行)。那么在C++中编程中,哪些情形会导致ABI不兼容呢?下面逐一列举一下。 二:C++ 中 ABI…...

【动态规划】深入动态规划:背包问题

文章目录 前言01背包例题一、01背包二、分割等和子集三、目标和四、最后一块石头的重量|| 完全背包例题一、完全背包二、 零钱兑换三、零钱兑换||四、完全平方数 前言 什么是背包问题&#xff0c;怎么解决算法中的背包问题呢&#xff1f; 背包问题 (Knapsack problem) 是⼀种组…...

NVIDIA AI Aerial

NVIDIA AI Aerial 适用于无线研发的 NVIDIA AI Aerial 基础模组Aerial CUDA 加速 RANAerial Omniverse 数字孪生Aerial AI 无线电框架 用例构建商业 5G 网络加速 5G生成式 AI 和 5G 数据中心 加速 6G 研究基于云的工具 优势100% 软件定义通过部署在数字孪生中进行测试6G 标准化…...

计算机视觉6——相机基础

一、数字相机基本工作原理 &#xff08;一&#xff09;像素概念 数字相机生成二维图像&#xff0c;图像最小单元是像素。 每个像素对应三维世界中某个特定方向&#xff0c;像素值衡量某一时刻来自该方向的光照强度/颜色 &#xff0c;即相机度量每个像素的光照情况并保存到对…...

入门到精通,C语言十大经典程序

以下是十个经典的C语言程序示例&#xff0c;这些程序涵盖了从基础到稍复杂的应用场景&#xff0c;适合初学者和有一定基础的开发者学习和参考。 1. Hello, World! 这是每个初学者学习编程时的第一个程序&#xff0c;用于验证开发环境是否正确配置。 #include <stdio.h>…...

【毕设】Python构建基于TMDB电影推荐系统

个性化电影推荐系统 这是一个基于FastAPI开发的现代化电影推荐系统&#xff0c;结合了协同过滤和深度学习技术&#xff0c;为用户提供个性化的电影推荐服务。 主要功能 &#x1f3af; 个性化电影推荐&#x1f50d; 电影搜索与浏览⭐ 电影评分系统&#x1f49d; 收藏夹功能&a…...

嵌入式常见概念的介绍

目录 一、MCU、MPU、ARM &#xff08;一&#xff09;MCU&#xff08;微控制器&#xff09; &#xff08;二&#xff09;MPU&#xff08;微处理器&#xff09; &#xff08;三&#xff09;ARM&#xff08;架构&#xff09; 二、DSP &#xff08;一&#xff09;数字信号处理…...

富兴号:拨云见日,打造普洱品质典范

在高端普洱茶市场的混沌格局中&#xff0c;价格与品质的天平严重失衡&#xff0c;消费者往往深陷 “高价却难觅好茶” 的困境。而新兴品牌富兴号强势崛起&#xff0c;奋力冲破这一迷局&#xff0c;致力于重塑 “号级茶” 的卓越品质&#xff0c;为茶叶赋予珍贵的品鉴与收藏价值…...

【WORD】批量将doc转为docx

具体步骤进行&#xff1a; 打开Word文档&#xff0c;按下AltF11快捷键&#xff0c;打开VBA编辑器。在VBA编辑器中&#xff0c;左侧的“项目资源管理器”窗口会显示当前打开的Word文档相关项目。找到您要添加代码的文档项目&#xff08;通常以文档名称命名&#xff09;&#xf…...

Linux内存管理架构(1)

0.内存空间架构 1.用户空间 在 Linux 系统中&#xff0c;应用程序通过 malloc() 申请内存&#xff0c;并通过 free() 释放内存时&#xff0c;底层的内存管理是由 glibc&#xff08;GNU C Library&#xff09;中的内存分配器实现的。glibc 的内存分配器负责与操作系统的内核交互…...

Ubuntu 各个常见长期支持历史版本与代号

文章目录 1. Ubuntu 历史版本与代号2. 查看当前系统版本 在 Ubuntu 操作系统里&#xff0c;每个版本都有一个别具特色的名字。该名字由一个形容词与一个动物名称构成&#xff0c;且形容词和动物名称的首字母是一样的。例如 “Warty Warthog&#xff08;长疣的疣猪&#xff09;”…...

信息安全管理与评估2021年国赛正式卷答案截图以及十套国赛卷

2021年全国职业院校技能大赛高职组 “信息安全管理与评估”赛项 任务书1 赛项时间 共计X小时。 赛项信息 赛项内容 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备配置防护 任务1 网络平台搭建 任务2 网络安全设备配置与防护 第二…...

在线上定位1G日志文件中的异常信息时,我这样做合适吗

1G级线上日志文件 的异常定位系统性方案 一、快速定位流程 import datetime import randomdef generate_springboot_log(file_name, file_size_gb):# 模拟Spring Boot日志内容log_levels ["INFO", "DEBUG", "WARNING", "ERROR"]cla…...

Transformer模型中的两种掩码

模型训练通常使用 批处理batch来提升训练效率。而实际中Transformer的输入序列&#xff08;如句子、文本片段&#xff09;长度往往不一致。为了让这些样本可以组成一个统一的形状 [B, T] 的张量给GPU进行并行计算提高效率&#xff0c;需要将较短的序列填充&#xff08;pad&…...

FastAPI-MPC正式发布,新的AI敏捷开发利器

FastAPI-MCP发布&#xff1a;零配置构建微服务控制平台的革命性实践 引言 在微服务架构日益复杂的今天&#xff0c;如何快速实现API接口的标准化管理与可视化控制成为开发者面临的核心挑战。近日&#xff0c;FastAPI-MCP工具的发布引发了技术社区广泛关注&#xff0c;其宣称能…...

Spring Boot 项目基于责任链模式实现复杂接口的解耦和动态编排!

全文目录&#xff1a; 开篇语前言一、责任链模式概述责任链模式的组成部分&#xff1a; 二、责任链模式的核心优势三、使用责任链模式解耦复杂接口1. 定义 Handler 接口2. 实现具体的 Handler3. 创建订单对象4. 在 Spring Boot 中使用责任链模式5. 配置责任链6. 客户端调用 四、…...