c++ 基础知识-类和对象-对象特性-空指针访问成员函数

【C++】类与对象——封装和对象的特性 1、C++面向对象的2、万事万物皆为对象,对象有属性和行为。3、具有相同性质的对象,可以抽象为类。 阅读详情

c++ 基础知识-类和对象-对象特性

1.空指针访问成员函数

#include <iostream>  
#include <string>  
using namespace std;
class Person
{
public:
	void fun()
	{
		cout<<"fun()"<<endl;
	}
	void fun1()
	{
		//判断指针是否为空,避免空指针导致报错
		if (this == NULL)
		{
			return;
		}
		cout<<"m_age"<<m_age<<endl;//传入空指针,不输出,报错
		cout<<"fun1()"<<endl;
	}
	int m_age;
};
int main()
{
	Person * p = NULL;
	//p->fun();
	p->fun1();
	return 0;
}  

2.const修饰成员函数成员对象

常函数

  • 成员函数后加const即为常函数
  • 常函数内不可以修改成员属性
  • 成员属性声明时加关键字mutable后,在常函数中依然可以修改

常对象

  • 声明对象前加const即为常对象
  • 常对象只能调用常函数
#include <iostream>  
#include <string>  
using namespace std;

class Person
{
public:
	//const 修饰变为常函数
	//this指针的本质是指针常量,指针的指向不可以修改
	//const Person * const this;
	//在成员函数后加const ,修饰this指针指向,指针指向不能修改
	void fun() const
	{
		this->m_age = 90;// error C2166: 左值指定 const 对象
		cout<<"fun()"<<endl;
	}

	//利用mutable关键字修饰,可以修改
	int mutable m_ID;
	int mutable m_age;
};

int main()
{
	//Person  p;
	//p.fun();
	const Person p1;//常对象
	p1.m_ID = 90;// error C3892: “p1”: 不能给常量赋值
	return 0;
}  
<C++>一篇文章搞懂类和对象中常函数和常对象的实质以及避免空指针访问的小妙招 🎉须知少年凌云志,曾许人间第一流 上篇文章刚讲完C++中类对象分配空间如何计算以及静态成员的一些特点,那么今天就继续学习当成员函数结合const关键字的使用。写完这篇文章就要到31号才能更新下一篇文章了,因为明天就期末考试了,需要备考,话不多说,开始操作。 🎉目录 常函数 详解常函数概念 指针常量和常量指针的区别 常对象 概念 常对象调用问题 空指针访问 使用this指针 不用this指针 🎉总结 常函数 概念:成员函数后加const后我们称这个函数为常函数 详解常.... 阅读详情

相关推荐

C++学习之对象特性(二)

在C++中,类的成员变量和成员函数在内存中是分开存储的。成员变量存储在各个对象的内存空间中,而成员函数则存储在一块共享的内存区域中。在上面的例子中,常量对象可以调用非静态成员函数,但不能调用静态成员函数。指针可以在类的成员函数中使用,帮助区分不同对象的数据成员。C++中的成员变量和成员函数分开存储,这种设计使得对象有独立的状态但共享相同的行为。指针指向调用成员函数的对象,使得可以在成员函数内部访问对象的数据成员。函数返回调用它的对象的指针,从而可以直接访问该对象的成员函数。

百锦再的博客 1万+

C++类对象空指针访问成员函数(不报错)

class A{ public: void test(){printf("test A");} }; int main(){ A*pA=NULL; pA->test(); } 结果是输出“test A”而不是程序崩溃,原因如下: 一种解释: A*pA=null; pA->test();//当调用成员函数时,只是将实参null传给this指针 test成员函数中并无任何需要通过this指针访问的数据成员,因此没有带来任何影响 会崩溃的情况,调用的成员函.

面朝大海,春暖花开 3574

区块链技术在碳足迹数据存证与溯源中的应用深度解析

消费者扫描产品上的二维码,即可通过区块链浏览器查询到该产品的数字碳标签,并追溯其从茶园到货架的每一步碳足迹数据,以及这些数据是如何被智能合约自动计算和认证的,从而建立起强大的品牌信任。如果说哈希链解决了数据的“存”与“证”的问题,那么智能合约则解决了数据“用”与“管”的自动化问题。综上所述,虽然针对“碳足迹数据可追溯性”这一特定应用场景的公开、标准化的性能基准案例尚不丰富,但现有研究和企业级解决方案(特别是联盟链)已经证明,通过合理的技术选型和架构设计,区块链的性能可以满足实际商业需求。

百态·数智思维 | 聚焦大数据、量化与未来AI 1104

PHP链表理解,如何理解c语言链表

C语言链表就是一种数据结构,可以在里面动态的进行存储分配还可以定义节点数据类型,以及实现对节点的增删改查等。链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,它可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。接下来将在文章中为大家具体介绍C语言中的链表,希望对大家有所帮助。【推荐课程:C语言教程...

weixin_39991055的博客 170

手把手解决GD32H759I-EVAL以太网通信三大坑:IP冲突、端口绑定失败、LWIP内存泄漏

本文针对GD32H759I-EVAL开发板在以太网通信调试中常见的三大难题——IP地址冲突、端口绑定失败和LWIP内存泄漏,提供了详细的实战排障指南。文章深入分析了问题根源,并给出了具体的网络配置、端口管理策略和内存泄漏检测方法,帮助开发者快速定位并解决嵌入式网络通信中的棘手问题,确保系统稳定运行。

weixin_29196315的博客 139

黑群晖DSM7.0.1物理机安装教程

使用芯片无忧工具,查看U盘的和。使用,格式化U盘。使用镜像写入工具,把引导写入U盘。修改文件,可以使用工具把文件复制到桌面,通过修改好之后,拖进这个界面中。或者在电脑中,查看U盘,打开U盘中的文件直接修改。具体修改内容如下:PID修改为U盘的PIDVID修改为U盘的VID默认只有mac1=a8412083CB52 mac2=0a11323D47F7 ,增加:mac3=a15823C08000 mac4=a23C04158B52 mac5=82a002524158 mac6=38233052415aS

JingLisen的博客 2万+

【C语言】空指针

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代.

weixin_63449996的博客 1万+

CentOS 7下kkFileView 4.4.0离线部署全攻略(含LibreOffice 7.5配置避坑指南)

本文详细介绍了在CentOS 7环境下离线部署kkFileView 4.4.0的全流程,包括LibreOffice 7.5的配置避坑指南、中文字体解决方案以及企业级运维实践。通过本指南,用户可以在内网环境中快速搭建稳定可靠的文档在线预览服务,提升办公效率。

weixin_28481133的博客 288

C++中使用空对象指针调用成员函数和delect this

C++中,空指针是不能够使用的,然后空对象指针有时候却能够调用成员函数。 下面定义一个简单的类: class TestCls { public : static void Test_Fun1(){ cout<< "Test_Fun1" <<endl; } void Test_Fun2(){ cout<&l

weixin_45187630的博客 841

解密Android相机框架:从HAL到应用层的全链路解析

本文深入解析Android相机框架的全链路架构,从应用层到硬件抽象层(HAL)再到驱动层,详细介绍了CamX-CHI架构的设计哲学与实战应用。通过HAL3接口、V4L2交互机制及Camera2 API的最佳实践,帮助开发者优化相机性能,解决多摄切换、预览卡顿等常见问题,提升成像效率与稳定性。

weixin_29238147的博客 407

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

技术分享 1713

C++面向对象之空指针访问成员函数

空指针访问成员函数 C++中空指针也可以访问成员函数,但是要注意看有没有用到this指针,如果有用到this指针就得加入this是否为空的判别来提高代码的健壮性。如下面的例子; 创建空指针; 没有this为空的判别:但是showClassAge函数访问了成员变量,这个操作在C++中默认用this指针来访问成员变量(这样才可以确定是哪个对象在调用或者修改成员变量);但是用空指针的时候还没有实例化出对象,因此空指针用到this时就会程序就会报错。 为了改进程序,提高代码的健壮性,加入this指针

lg201601的博客 351

Python爬虫实战:基于最新技术栈的晋江文学城小说爬取

本文将详细介绍如何使用Python最新技术栈构建一个高效的晋江文学城小说爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、分布式爬虫设计以及数据存储优化等高级话题。文章包含完整的代码实现,使用aiohttp+asyncio实现异步爬取,Playwright处理动态渲染,并结合Redis实现分布式任务队列。本文旨在为读者提供一个全面的现代Python爬虫开发指南。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据分析和内容聚合等领域。

2201_76125261的博客 869

c++学习三

单例模式案例-1 2.1 目的 为了让类中只有一个实例 ,实例也不需要自动的释放掉 2.2 将默认构造和拷贝构造私有化 2.3 内部维护一 对象指针 2.4私有化唯一指针 2.5 对外提供 getstance 方法来访问这个指针 2.6 保证类中只能实例化唯一一个对象c++对象模型初探 3.1成员变量和成员属性是分开储存的 3.2空类大小 1 3.3只有非静态成员属性才属于对象身上3.this指针的引用 4.1指针永远指向当前对象 4.2解决命名冲突 4.3*this 指向对象本体 4.4非静态成员函数

goodnessg的博客 191

不加行也能填满:用 ABAP BDC 驯服 Table Control 滚动录制缺陷,批量维护供应商银行账户

摘要 本文探讨了在SAP ECC/S4HANA系统中处理供应商主数据时,Table Control控件带来的批量导入挑战。文章指出,银行账户维护界面中Table Control的滚动动作难以被录制工具捕捉,导致批量导入数据时仅能填充前5行。解决方案是通过BDC_OKCODE显式触发翻页(如=P+),并配合行号拼接(如(01)~(05))将数据写入不可见行。文中提供了完整的ABAP程序示例,展示了如何读取外部文件、动态生成BDCDATA、处理表格翻页逻辑,最终通过CALL TRANSACTION执行XK01事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 270

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

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

【C++基础篇】学习C++就看这篇--->类和对象入门

本文介绍 C++ 面向对象要点,涵盖类定义方式、访问限定符及封装,类实例化与对象模型,重点阐述内存对齐及对象大小计算,深入讲解 this 指针在成员函数中的作用与特性,助力理解 C++ 面向对象核心概念。

熬夜秃顶中...... 2289

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++:类和对象1

(1)class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。C中数据和声明分离,且C中要将名字区分C++中放到一个Stack,直接放到一个类域中C++中不同类域可以使用同一个函数名C中喜欢称作变量,C++喜欢称作对象public:// 成员函数perror("malloc申请空间失败");return;top = 0;// ...扩容。

2401_88251472的博客 1145

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++学习记录--C++基础6(类和对象,静态成员,this指针,空指针访问成员函数)

学习b站黑马程序员C++课程记录。

sjj200108的博客 556

C++类与对象

C++类与对象讲解,访问限定符,this指针相关内容详细解释,C编程思想及C++编程思想的比较。

qq_75270497的博客 1246

C++中成员函数和变量的存储、this指针的使用和const关键词以及常对象

对C++中的成员函数、成员变量、this指针、const的不同修饰对象进行探讨。

weixin_73497355的博客 1629

【C++类和对象Lesson1】面向对象、类的初步认识、this指针详解

朋友们好,这篇播客我们继续C++的初阶学习,现在对一些C++的入门知识做了些总结,整理出来一篇博客供我们一起复习和学习,如果文章中有理解不当的地方,还希望朋友们在评论区指出,我们相互学习,共同进步! 文章目录一:面向对象的初步认识1.1:封装1.2:类的引入1.3:类的访问权限1.4:struct和class的区别1.5:类的作用域1.6:类的实例化1.7:类对象模型二:this指针2.1:this指针的特性2.2:this指针的用途2.3:空指针访问成员函数 什么是面向对象? 一:面向对象的初步认识 C

qq_43727529的博客 788

类和对象——类的成员函数的this指针

c++的类中的this指针。

m0_73693552的博客 1414

用类的空指针调用非虚成员函数和虚函数

        先来看下面这段代码: class A { private: int data; public: void fun1() { } virtual void fun2(){ } }; int main() { A *p = nullptr; p->fun1(); p->fun2(); }         p是空指针,fun1()是普通成员函数,fun2(

WYuan的博客 2411

类和对象(上)

访问限定符\color{orange}{访问限定符}访问限定符public(公有\color{blue}{公有}公有保护的\color{blue}{保护的}保护的private(私有的)当在类里面没有给特地限定符的时候相当于私有是无法访问的在编译器上就会有报错其中当在private限定符出现的下面如果出现了public的话同样就是在两个限定符之间进行作用在访问的时候就只有三个在public的地方可以访问在c语言的时候我们都是把声明和定义分离。

LJF2625707287的博客 1876

C++ [类和对象 - 上]

C++在C语言的基础上增加了面向对象的特性,有了类的概念,使其解决问题的焦点从解决过程转变为解决对象,对于C++来说任何事物皆为对象,从这里开始我们正式进入面向对象的大门!

ARMCSKGT的博客 5282

【C++】类与对象总结

C++类与对象总结

Sweet_0115的博客 1431
上一篇: c++ 基础知识-类和对象-对象特性-静态成员
下一篇: c++ 基础知识-类和对象-友元
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值