C++ const常函数和const指针的用法

基于深度学习的鸟类检测识别系统:YOLOv5 + YOLOv8 + YOLOv10 + UI界面 + 数据集 YOLOv5是当前目标检测领域非常流行的模型,具有良好的检测精度和实时推理速度。其网络结构相比前几代YOLO模型进行了优化,尤其是在检测精度和计算效率上有了显著提高。YOLOv5特点高效性:能够在较低的硬件环境下进行实时检测。易于部署和使用:YOLOv5提供了简单的API接口,方便开发者快速集成和使用。优异的精度:在多个数据集上测试,表现出色。本文详细介绍了基于YOLOv5、YOLOv8和YOLOv10的鸟类检测识别系统的设计与实现。 阅读详情

const常函数

对于类中的函数,若是定义了const,就成为了常函数;
const修饰函数承诺在本函数内部不会修改类内的数据成员,不会调用其它非 const 成员函数。
常函数可以使用数据成员,但是不能修改数据成员,对函数的功能有更明确的限定;
如:

class A{
private:
    int a = 0;
public:
    int change() const
    //change()就成为了常函数
    {
        this->a = 1;
        //常函数不能修改类中的数据成员,error
        return a;
    }

};

同时加了const定义的对象成为常对象,常对象只能调用常函数,如:

A const a;

a成为常对象,只能调用常函数

const指针

如下参考自《C++ primer plus》
const指针有两种不同的定义方法:

  1. 指向const常量对象的指针,防止使用该指针来修改所指向的值,如:
const float g_earth = 9.80
const float *pe = &g_earth

这种定义方法无法通过常量指针来修改所指向地址的内容,但是可以通过变量自身来修改(若是非const常量);
在C++中规定,禁止将const常量的地址赋予非const常量指针,也就是const常量的地址必须赋予常量指针; 非const常量的地址可以赋予给const常量指针; 这样因为若为一个非const常量指针赋予了const常量的地址,那么允许通过非const常量指针来修改const常量的内容,和const的定义相悖了;

  1. 将指针本身声明为常量,可以防止改变指针指向的位置,如:
int sloth = 3
int * const finger = &sloth

这样指针finger只能指向sloth,但是不影响使用finger来修改sloth的值(当然sloth需要是非const变量)

这里在补充一种方式:

double trouble = 2.0E30
const double * const stick = &trouble

这样stick只能指向trouble,并且也不能通过stick来修改trouble的值;

const指针的使用场景

我们在将指针变量作为参数来传递的时候,可以使用指向const的指针来保护传入的数据,这样在函数中是没有办法通过指针来修改传入的数据;

数据挖掘实战-基于KMeans算法对超市客户进行聚类分群 本实验基于KMeans算法对超市客户进行了聚类分群。通过对客户购物数据进行聚类,我们成功将客户分为不同的群体。每个群体代表了具有相似购物行为和偏好的客户群体。通过实验结果,我们发现了客户群体之间的明显差异和共性。不同群体的客户在购买频率、购物金额和购买种类等方面有所区别。这为超市提供了重要的市场细分信息,帮助超市经营者更好地了解不同客户群体的需求和喜好,制定有针对性的营销策略和商品推荐,提高客户满意度和忠诚度。此外,实验还揭示了超市客户的购物行为规律,为超市优化商品陈列和促销策略提供了指导。 阅读详情

相关推荐

Discrete Optimization (Coursera) 学习笔记 Week 1 introduction (开个帖子)

Week 1 Introduction 这位教授Pascal Van Hentenryck 真的算是优化领域神级别的人物了吧?截一张Google scholar的图大家感受一下… 居然在Coursera上看到了他开的课:Discrete Optimization。试听了几节后,发现讲得很有激情,而且深入浅出。遂决定花暑假跟完这一门课。 这门课每周花两三个小时介绍基础概念,然后得花十几个小时写作业(coding)… 一开始以为Coursera上的课的作业应该不会太难,然后第一次作业(knapsack)我就被

ZJ_11701的博客 656

[流畅的 C] const 在函数中的使用技巧

[C] const 用法测试 文章目录测试代码usageReference 测试代码 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { int bar = 8; char cfoo =

「熊猫系列项目」ing 736

Comsol 基于局部谐振压电材料的可调水下低频吸声

它通过建立基于LRPM的水下吸声理论模型,从有效材料的角度分析可调吸声特性和吸声机理,进一步提高吸声性能。该研究发现,薄的LRPM层可以在目标低频范围内实现出色的吸声效果,而这个目标低频可以通过操纵谐振分流电路进行主动调谐。通过引入局部谐振压电超材料和可调谐的谐振分流电路,研究人员能够有效地控制水下低频吸声特性,并且在吸声带宽方面取得了显著的改进。通过利用薄的活性超材料层,LRPM在水声吸声方面展现出潜力,并且通过操纵谐振分流电路,可以实现对吸声特性的精细控制。

weixin_45382232的博客 786

c++const指针与函数调用

在我的博客http://blog.youkuaiyun.com/caoyan_12727/article/details/52064958中,已经讨论了动态绑定和静态绑定,以及在缺省参数情况下虚函数的绑定情况。一般情况下,我们 是用非const的基类指针指向派生类对象,如果通过该指针调用虚函数则发生的动态绑定,如果我们定义一个const指针,指向派生类的对象,如果派生类里定义了同名的虚函数和 const函

caoyan_12727的博客 1633

属性基加密(Attribute-based Encryption, ABE)

KP-ABE中,用户的密钥定义了访问策略,密文的属性与策略进行匹配。CP-ABE中,密文定义了访问策略,用户的属性与策略进行匹配。

2201_75392924的博客 1830

【记录】游戏体验报告怎么写(自我成长篇)

2019年3月更新: 这个倒是不用推翻,我个人虽然写的东西还是有一些偏差的,但是“表哥”说的倒是没毛病的,这篇主要是为了记录用,具体的干货也有,都在图片里,请自行提取 =====18年初原答案 作为一个游戏策划新人,游戏分析可能抓不到点子上,试着总结记录一下游戏体验报告分析的成长(因为水平不同,视野可能也不一样,也许之后几年回头看这些东西都是小儿科或者是错误的,所以只写出当下的想...

eat_human的博客 6万+

常量指针、指针常量以及指向常量的指针常量

三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。 一)常量指针。 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。 指针指向的对象是常量,那么这个对象不能被更改。 在C/C++中,常量指针是这样声明的: 1)const int *p; 2)int const *p; 常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针

qq_21311911的博客 794

CUDA&PCL 点云体素下采样

CUDA&PCL 点云体素下采样

dayuhaitang1的博客 1268

c++ 常量 常指针 常函数 常对象

c++ 常量 常指针 常函数 常对象

weixin_40378209的博客 793

RT-DETR升级:TGRS2026 CKConv结合RepC3 | 方向特征与跨阶段融合协同,小目标漏检率大幅下降

小目标鲁棒性提升:CKConv方向选择性抑制背景噪声,RepC3跨阶段传递保留深层微弱热信号,显著改善低对比度、低信噪比场景下的检测精度。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 151

AMDGPU IH(Interrupt Handler)实现分析

AMDGPU IH环形缓冲区机制是显卡驱动中高效处理GPU硬件中断的核心架构。该机制通过环形缓冲区存储中断事件,利用读写指针(wptr/rptr)同步硬件与驱动间的数据交互。硬件写入事件后驱动遍历处理,通过指针掩码实现环形循环,并具备溢出检测和虚拟化环境下的重置保护。其优势在于批量处理降低中断开销,指针同步确保可靠性,支持多队列扩展和SR-IOV虚拟化场景,为GPU中断管理提供了高性能基础架构。

图形/计算GPU的驱动与虚拟化技术分享园地 1638

c++中const修饰指针与函数指针

c++中const修饰指针与函数指针

weixin_47442149的博客 320

23、工业物流中的多智能体路径规划与碰撞处理策略

本文探讨了工业4.0背景下工业物流中的多智能体路径规划(MAPF)与碰撞处理策略。分析了自动导引车(AGV)等移动资源的应用现状,综述了主流路径规划算法如A*、D*Lite、M*等,以及集中式与分布式碰撞检测方法。重点比较了五种碰撞避免策略:路径交叉、优先级、起始时间调整、无交叉路径和速度调整,提出了基于环境条件的策略选择流程,并通过流程图展示了评估、组合、测试与优化的全过程。文章强调应根据订单不确定性、时间约束、优先级和生产组织等因素综合选择或组合策略,以提升物流效率与系统可靠性。

mac99的博客 125

C/C++中的const

如果是 const 在 * 之前,如 const int *p ,表示指针 p 所指向的内容是常量,不能通过 p 来修改它指向的内容,但 p 本身可以指向其他地址;如果 const 在 * 之后,如 int * const p ,则表示指针 p 本身是常量,不能再指向其他地址,但可以通过 p 修改它指向的内容;- 在类中, const 成员函数是一个重要的概念。4).如果两个函数名相同,参数相同,但是一个是常函数一个是非常函数,那么这两个函数为函数重载,非常对象优先调用非常函数,常对象只能调用常函数。

2401_88249494的博客 2263

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【复习】C++之const成员

const int num = 0; // 常量必须要初始化,而且不可修改。 ==================================================== int num = 100; const int *p = # 在这两句代码后,p可以修改,*p不可以修改。 int num = 100; int *const p = &nu...

ddiioopp123的博客 299

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

const修饰指针,const修饰成员函数

const修饰指针有三种情况 const修饰指针 --- 常量指针 const修饰常量 --- 指针常量 const即修饰指针,又修饰常量 int main() { int a = 10; int b = 10; //const修饰的是指针,指针指向可以改,指针指向的值不可以更改 const int* p1 = &a; cout << *p1 << endl; a = 100;//只是不能通过指针修改指向的值,还是可以直接改的

qq_40786884的博客 251

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++中的const

文章目录1. 整型常量2. 常量指针(指向 常量的指针)3. 指针常量其它 1. 整型常量 int const a; // 整型常量 // 或const int a; a被声明为为一个整数,它的值不能修改。 int const *pci; // 指向整型常量的指针 己值(他址)可以修改,他值不可修改。 2. 常量指针(指向 常量的指针) int * const cpi; // 指向整型的常量指针 己值(他址)不可修改,他值可以修改。1 引用的本质 int a; int &ref = a

Time travel的博客 721

c++ this指针与空指针调用类方法以及常函数

1、c++的成员变量与成员内函数是分开存储2、每一个非静态成员函数只会诞生一份函数实例,多个同类型的队形公用的是同一份成员函数的代码3、this指向调用这一份成员函数代码的对象实例4、this是一个隐藏的指向对象实例的一个指针,无需定义直接使用即可。

笔记 436

【c++】1.const和constexpr相关知识

const和constexpr相关知识 记忆法: const是常量,*是指针,const * 按顺序念就是【常量指针】, * const 按顺序念就是【指针常量】。 const int * p; //p是常量指针,p是const int *,const限定的是int,即指针指向的地址中存储的值(int型),所以这种写法不能修改指针指向的地址的中存储的值,但是可以修改指针的指向。 int * const p; //p是指针常量,p是int*,const限定的是指针,即不能修改指针指向,但是可以修改指针指向的地

u011754972的博客 351

const用法

const主要是为了程序的健壮型,减少程序出错.最基本的用法:const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100)int const b=100; //和上面作用一样 const指针和引用一般用在函数的参数中int* m = &a; //出错,常量只能用常指针int c= 1;const int*pc = &c;//常指针可指

kaste的专栏 981

C/C++笔记总结——类中空指针,const,友元

结果会发现,showPersonName() 可以正常调用;但 showPersonAge() 调用时会报错。原因是空指针不能访问成员变量;在调用 func() 时也会报错,原因是空指针不能调用虚函数。友元的目的就是让一个函数或者类访问另一个类中的私有成员。友元的关键字是:friend。友元有三种实现方式:

给你糖ya的博客 1008

c++对象模型和this指针

属于类的对象上:成员变量不属于类的对象上:成员函数,静态变量,静态函数再补充的概念:空对象在内存中默认占一个字节,便于分辨不同的空对象,每个空对象在内存中占据的内存应是独一无二的。

Mitos的博客 623

const用法的体会 (转)

const用法的体会 (转)[@more@]网名: dskra 绿青虫 EMail: .NET">dskra@163.net const主要是为了程序的健壮型,减少程序出错.最基本的用法:const int a=1...

csd3176的博客 72

iOS中的const关键字

1.修饰变量 如const int a =3; 常量a的值不能再修改2.修饰指针 如 const char*p =123; p[0]=’4’; 是错的, 字符串内容不允许改 char *const p = “123”; p =”456”; 是错误的, 指针不允许再指向其他地址3.常引用 多用于参数, 防止参数被修改,引用是避免创建参数副本 void test( const struc

LHEnjoy的博客 626

C++研发 核心篇 第四讲 【4.3 C++对象模型和this指针】

4.3 C++对象模型和this指针 4.3.1 成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用内存空间:1 C++编译器会给每个空对象也分配一个字节的空间,是为了区分空对象占内存的位置。 每个空对象也应该有一个独一无二的内存地址。 非空,那么空的那一个字节就不算了, 从非静态成员变量开始算。 class Person { public: Person() { mA = 0; } //非静态成员变量占对象空

Kukeoo的博客 137

C++入门——对象模型和this指针

参考链接 https://www.bilibili.com/video/BV1et411b73Z?p=114 成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上。 空对象 空对象占用内存空间为:1。因为C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置,每个空对象也应该有一个独一无二的内存。 例如: class Person { }; void test() { Person p; cout <&l

beilizhang的博客 253
上一篇: Linux中断异常好文
下一篇: C++ static用法的小结
alex_mist
博客等级 码龄9年 17粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值