C++中常对象与常成员函数以及this与成员函数的联系与区别

SpringBoot实战——仿b站项目(一) 热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。 阅读详情

class A
{
};
/*

小记:对于const声明的对象,针对哪个变哪个不变得问题,实际上就是const后的整体不变
e.g.:
const int *A; 或 int const *A; //const修饰指向的对象,A可变,A指向的对象不可变
int *const A;   //const修饰指针A, A不可变,A指向的对象可变
const int *const A; //指针A和A指向的对象都不可变

*/
1. 常对象
用const修饰的对象叫对象常量,其格式如下:〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉
声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。
常对象只能调用常成员函数,而非常对象既可以调用非常成员函数又可以调用常成员函数
2. 常成员函数
常成员函数含义是通过该函数只能读取同一类中的数据成员的值,而不能修改它(在const成员函数中: 可以修改被定义成mutable的成员变量或者静态成员变量(因为成员函数一般针对对象而言,而静态的成员是对类而言的))。C语言中,volatile
其格式如下:〈类型〉〈函数名〉(〈参数表〉)const;
常成员函数不能更新对象的数据,也不能调用非const修饰的成员函数。常对象只能调用类的常成员函数。总之,常成员函数不能够以任何方式改变数据成员对的值,包括直接(函数体自身),间接(调用其他的非常成员函数来改变)均是错误的。
说明:
(1) const是函数类型的一部分,在实现部分也要带该关键字。
(2) const关键字可以用于对重载函数的区分。(常对象只能调用常成员函数,注意当出现函数重载时,一个非常对象(一般对象)首先调用非常成员函数,如果不存在重载的非常成员函数,那么它会调用常成员函数)
(3) 常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。
(4) 常成员函数只能调用常成员函数,而不能调用非常成员函数(那怕这个非常成员函数没有对数据成员进行更改),但是常成员函数可以被非常成员函数调用

任何不修改成员数据的函数都应该声明为const函数,这样有助于提高程序的可读性和可靠性

构造函数和析构函数对这个规则例外,它们从不定义为常量成员,但可被常量对象调用(被自动调用)


    对于某个类的所有对象来说,类成员函数只在内存中有一份拷贝,所有的对象都共享同一份成员函数的代码。同一个类的不同的对象之间的差异仅仅是通过数据成员来体现的。c++实现成员函数的时候实际上用到了一个技巧——this指针。this指针是当前调用成员函数的对象首地址,我们知道通过这个地址可以访问到对应对象的成员变量。那么成员函数如何区分this究竟指向哪个对象呢?技巧就在于,c++背后把成员函数当做普通函数一样调用,除了传入实际的参数外,还把所属对象的指针作为参数this传入,函数内部通过显示的或者隐含的方式访问对象成员(注意如果成员函数的形参与对象的数据成员的变量名一样,那么只能够显式使用this指针来区别形参,以此表示是当前对象的数据成员,否则将引用的是这个成员函数的形参)。

【强化学习】11 —— Double DQN算法与Dueling DQN算法 可以看到由于数据点的分布,使得拟合出的价值函数无法与真实的价值函数吻合,甚至在部分区域产生了明显的偏差。Dueling DQN 是 DQN 另一种的改进算法,它在传统 DQN 的基础上只进行了微小的改动,但却能大幅提升 DQN 的表现。这样,即使其中一套神经网络的某个动作存在比较严重的过高估计问题,由于另一套神经网络的存在,这个动作最终使用的值不会存在很大的过高估计问题。.在同一个状态下,所有动作的优势值之和为 0,因为所有动作的动作价值的期望就是这个状态的状态价值。环境的状态包括倒立摆角度的正弦值。 阅读详情

相关推荐

史上最强量化工具库 Ta-Lib 从入门到精通,一篇文章就够了!

Ta-Lib 提供的 13 个关键指标,并配上详细的代码示例,确保你看完就能直接上手!🔥。

奔跑的蜗牛 9924

C++基础之——常成员函数

格式:返回值 函数名(形参表) const {函数体} 例如:void fun(int a) const { }在实现只读作用的函数中,可以防止程序员不小心修改了成员变量的值。

qq_66660784的博客 1002

扩散模型在工业缺陷检测中的应用与优化

扩散模型作为生成式AI的重要分支,通过逐步去噪的逆向过程实现高质量数据生成。其核心U-Net架构结合残差连接和时间步嵌入,特别适合处理工业场景中的细微缺陷检测。在计算机视觉领域,这种技术突破了传统深度学习模型对小样本数据的限制,通过域自适应预训练和小样本微调两阶段框架,显著提升金属表面、纺织品等复杂场景的检测准确率。关键技术实现涉及噪声调度优化、多任务损失设计等工程实践,最终在MVTec AD等工业数据集上达到90%以上的检测精度,为智能制造提供可靠的自动化质检方案。

weixin_30512043的博客 497

C++易错知识点笔记(八)常成员函数,常成员变量及初始化列表,静态成员变量,静态成员函数

1,常成员函数 常成员函数意味着该函数内部不能修改类成员变量,而一个类当中一般都有getdata这样的函数暴露数据成员的接口,所以一般来说像get之类返回类的数据成员的函数,它的内部不会涉及到类成员变量的修改,这时候建议将这样的函数声明为常成员函数。 ...

weixin_42445051的博客 755

告别BAPI!深入SAP S/4HANA BP框架:cl_md_bp_maintain维护客户主数据的正确姿势与性能优化

本文深入解析SAP S/4HANA中cl_md_bp_maintain框架的高效实践与架构设计,对比传统BAPI方式,展示其在业务伙伴(BP)主数据维护中的性能优势与现代化特性。通过详细代码示例和性能测试数据,揭示如何利用该框架实现批量处理、集中校验及智能错误恢复,助力企业从ECC向S/4HANA平滑迁移。

weixin_30596735的博客 358

内网穿透-frp二层隧道搭建

环境: weblogic: 192.168.0.133 10.10.20.12 win7 : 10.10.20.7 10.10.10.7go语言、跨平台的 可以分为frpc和frps frpc—>请求----->frps frps:放到黑客公网上 1.需要出网 2.配置: frpc:放到肉鸡上,请求frps 2.端口转发 2.1frpc传到肉鸡(weblogic) 利用工具,传入内存马到weblogic,然后使用冰蝎进行连接 然后在文件管理中上传frpc.exe和frpc.ini文件 fr

yyytaotao的博客 2103

c与c++区别之this指针的巧妙应用

this指针(一个永远指向调用对象首地址的指针)为什么要使用this指针在c++刚开始学习的过程中,通篇都在强调“类是对象的抽象,对象是类的示例”。那么当同一个类内的不同对象调用同一个函数体的时候,函数体将不同对象的数据进行整合计算,得到的值在返回到该对象的过程是如何实现的呢?在c语言中我们习惯使用一个指向结构体的指针实现,而在c++中,函数体会隐式的调用this指针,将对象的首地址传给函数体而实现

errors5835的博客 758

Doris数据过期策略:自动清理历史数据

在数据的世界里,就像我们的房间会堆满各种东西一样,数据库也会积累大量的数据。随着时间的推移,很多历史数据可能不再经常被使用,但它们却占据着宝贵的存储空间。Doris是一款强大的数据库,为了让它能更高效地运行,合理地管理数据,我们就需要一种方法来自动清理那些不再需要的历史数据。本文的目的就是详细介绍Doris的数据过期策略,让大家知道如何利用这个策略来实现自动清理历史数据。范围涵盖了从基本概念到实际操作的各个方面。本文会先介绍一些和Doris数据过期策略相关的术语,让大家对一些专业词汇有个基本的了解。

软件工程实践的博客 555

C++学习笔记18:对象和成员函数

对象 类的对象就是该类的某一特定实例。 声明对象的方式 类名 对象名; 访问对象成员的方法 数据成员:对象.数据成员名 函数成员:对象.函数成员名(参数表) 在类的外部只能访问到类的公有成员;在类的成员函数中,可以访问到类的全部成员。 类的成员函数 实现语法 返回值类型 类名::函数成员名(参数表) { 函数体 } 成员函数调用的目的对象 调用一个成员函数与调用普通函数的差异在于,使用“...

effort_study的博客 728

HITECH海泰克触摸屏如何使用串口进行程序的下载和上传(拨码设置)以及离散量报警相关设定?

HITECH海泰克触摸屏如何使用串口进行程序的下载和上传(拨码设置)以及离散量报警相关设定? 首先,我们进行触摸屏一侧的设置,如下图所示: 触摸屏背后有拨码开关,当我们需要上传或下载程序时,需要将7#开关拨到上面; 左侧是DC24V电源接口; 下方是COM1、COM2和COM3通信端口,选择我们需要的端口后,插上通信电缆,拔掉24V电源,然后重新上电; 然后,屏幕会进入如下图所示界面,此时显示当前选择的端口为COM2,我们点击F2“config”,进入设置界面, 可以看到COM2端口是“Enabled”

Robot_PLC_HMI_Automation 3万+

Qwen-Image(阿里通义千问)技术浅析(一)

Qwen-Image(阿里通义千问多模态模型)是阿里巴巴推出的视觉-语言多模态大模型,能够理解图像内容并完成复杂的跨模态任务。

m0_75253143的博客 678

对象和成员函数

的,但是可以。

weixin_52955026的博客 211

【OpenClaw从入门到精通】第04篇:Web/TUI/钉钉全打通!OpenClaw多端交互实测指南(2026避坑版)

本文详解OpenClaw三大交互方式(Web控制台、TUI终端、钉钉集成),解决新手多端操作难题。Web控制台适合可视化深度配置,TUI终端满足服务器高效运维,钉钉集成实现移动办公协同。提供2026实测配置步骤、代码示例及避坑指南,涵盖设备配对、终端命令优化、聊天机器人回调验证等核心场景,助用户快速掌握"随时召唤AI助理"的全链路方案。 关键词 OpenClaw、多端交互、Web控制台、TUI终端、钉钉集成、AI助理、实操指南 核心亮点 全链路打通:覆盖Web/TIM/IM三端配置

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 3543

第三章 类和对象进阶之——this指针

1、概念 C++规定,当调用一个成员函数时,系统自动向它传递一个隐含的参数,该参数是一个指向调用该函数的对象的指针,称为this指针静态成员函数是类具有的属性,并不作用于某个对象,其内部不能使用this指针。 myDate: :myDate (int year, int month, int day) { this->year = year; this->month = month; this->day = day; }

run__ning的博客 438

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ca65a_c++_类的成员函数_txwtech_this指针

/*ca65a_c++_类的成员函数_txwtech_this指针 函数原型必须在类中定义 函数体: 1.在类中定义函数体 2.在类外定义函数体-一般定义都写在类的外面 this 指针 const成员函数 txwtech */ /*ca65a_c++_类的成员函数_txwtech_this指针 函数原型必须在类中定义 函数体: 1.在类中定义函数体 2.在类外定义函数体-一般定义都写在...

Txwtech 340

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

类和对象(2)

而静态成员函数可以通过类来直接调用,编译器不会为它增加形参 this,它不需要当前对象的地址,所以不管有没有创建对象,都可以调用静态成员函数。普通成员函数必须通过对象才能调用,而静态成员函数没有 this 指针,无法在函数体内部访问某个对象,所以不能调用普通成员函数,只能调用静态成员函数。普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。,不知道指向哪个对象,无法访问对象的成员变量,也就是说静态成员函数不能访问普通成员变量,只能访问静态成员变量。

m0_74788964的博客 355

jre9下载 jdk9

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

C/C++中的常成员函数

代码: 1 #include <iostream> 2 3 using namespace std; 4 5 class A{ 6 public: 7 void func1(){ 8 cout<<"func1"<<endl; 9 } 10 ...

weixin_30254435的博客 130

c++面向对象特性及使用方法(类,与类的操作)

面向对象,类,构造函数,析构函数,成员变量和成员函数,静态成员变量和静态成员函数,常成员函数,this指针的相关概念和部分例子.

legggg的博客 149

深拷贝构造函数

栈区(Stack)和堆区(Heap):栈是一种线性数据结构,堆是一种非线性数据结构,堆用于动态分配内存,堆中的数据具有较长的生命周期,栈的内存管理由编译器和程序自动处理,通常是静态分配,堆区访问速度更慢。Line::Line(int x1,int y1, int x2,int y2): m_CoorA(x1,y1),m_CoorB(x2,y2) { //常对象成员只能以这种方式来赋值,不能在函数体内写。//指向常对象的指针是指针类型不可变,而指向对象的常指针是指向对象不可变。//三者输出的结果是一样的。

m0_74420310的博客 604

C++函数前后加const的区别

1、函数前后const 函数前const:普通函数或成员函数(非静态成员函数)前均可加const修饰,表示函数的返回值为const,不可修改。格式为: const returnType functionName(param list) 函数后加const:只有类的非静态成员函数后可以加const修饰,表示该类的this指针为const类型,不能改变类的成员变量的值,即成员变量为read only...

Gorgeous_mj的博客 2万+

《C++ 类与对象避坑指南上:默认成员函数 /this 指针常见误区拆解(附日期类小项目)》

本文从类的基础定义入手,顺着 “类与对象的关联” 这条主线,拆解了对象实例化的本质、this 指针的隐形逻辑,也重点梳理了默认成员函数(构造、析构、拷贝构造、赋值重载)的关键规则 —— 这些函数看似 “隐形”,却默默支撑着对象的创建、初始化、资源释放等核心操作,尤其要注意 “浅拷贝与深拷贝” 的坑,像 Stack 这类含资源的类必须手动实现深拷贝。 最后通过日期类的实战,也能感受到:类与对象的核心是 “封装”—

2402_87731470的博客 1万+

[C++]默认成员函数等——喵喵要吃C嘎嘎3

类的实例化 类对象模型   如何计算类对象的大小   类对象的存储方式猜测   this指针 C语言和C++实现Stack的对比   C语言   C++ 类的6个默认成员函数   构造函数   析构函数   拷贝构造函数   赋值运算符重载   const成员函数   取地址及const取地址操作符重载

ormstq的博客 2万+

C++ 中 const 成员函数和 this 指针

详细介绍了C++ 中 const成员函数的使用以及注意事项。

大海洋的博客 1866

【C++】类和对象(上)—— this指针

C++类和对象详细解析,手把手⚡弄懂重点,手撕✅面试真题,真的不点进来看看吗?

qq_42996461的博客 1835

C++:类中const修饰的成员函数

const修饰的类成员函数

小青菜的博客 2990

C++中的this指针、const成员函数与mutable关键字

本文摘要:C++中的this指针、const成员函数和mutable关键字是面向对象编程的重要机制。this指针是成员函数的隐含参数,用于对象自引用、解决命名冲突和链式调用;const成员函数通过限制修改操作来保护对象状态;mutable关键字允许在const函数中修改特定变量,用于记录内部状态。三者协同工作,this指针支持对象操作,const确保安全性,mutable提供灵活性,共同维护对象完整性。合理使用这些特性能提升代码的安全性、可读性和可维护性。

2503_90937448的博客 1257
上一篇: C++中虚函数、纯虚函数、抽象类、重载、覆盖、隐藏的区别与联系
下一篇: 打印所有出栈序列(指定进栈序列的顺序)
mlee1018
博客等级 码龄12年 36粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值