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++中使用空对象指针调用成员函数和delect this

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

weixin_45187630的博客 841

Lisflood

文献:基于SWMM和LISFLOOD-FP模型的居住区低影响开发模拟评价。问题:多个节点溢流同时,不行,待解决。目录下,cmd命令行。

警警的博客 2663

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

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

weixin_39991055的博客 170

springboot源码 红色J_通达信副图指标源码之,出手就赢

今天跟大家分享一个通达信副图指标源码,本指标没有未来函数,因为本指标没有卖点提示,所以本指标需配合主图指标使用效果会更好,简单易懂,很容易明白,所以就不过多介绍使用方法了,以下是指标的贴图。风险提示!股市有风险买卖需谨慎,本指标只做参考建议,不做买卖交易结果,自己要对自己交易结果的盈亏负责,以下是指标的源码。VAR2:=REF(LOW,1);VAR3:=SMA(ABS(LOW-VAR2),3,1)...

weixin_39859909的博客 2847

Maven证书信任危机:PKIX path building failed的全面解析与实战修复

本文全面解析了Maven构建中常见的`PKIX path building failed`证书验证错误。该错误通常在使用特定镜像仓库或自建仓库时,因SSL/TLS证书不被JDK默认信任而触发。文章深入剖析了错误根源,对比了临时忽略检查与永久导入证书等不同修复方案的安全性与适用场景,并推荐通过`keytool`将证书导入JDK信任库的根治方法,以保障构建安全与稳定。

zzz56的博客 506

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

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

lg201601的博客 351

【vue看板】

大屏看板提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:代码量较多,看板中的。

weixin_46223284的博客 2772

【C语言】空指针

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

weixin_63449996的博客 1万+

Zabbix-01简单导入MIB文件并测试

这里写自定义目录标题安装 MIB文件启用MIB文件测试MIB文件 MIB文件 MIB代表管理信息库。 MIB文件允许您使用OID(对象标识符)的文本表示。 ##例如: ifHCOutOctets 是OID【1.3.6.1.2.1.31.1.1.1.10】的文本表示 安装 MIB文件 在基于Debian的系统上: # apt install snmp-mibs-downloader # download-mibs 在基于RedHat的系统上: # yum install net-snmp-libs 启用M

lokibaba的博客 9178

ethercat linux lan9252 - lan9253调试

linux 的ethercat测试

linsheng_111的专栏 1934

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

【调优】OpenClaw从零开始高阶调优之skill篇

本文详细解析了OpenClaw技能系统的核心机制。首先介绍了技能的分层加载逻辑,按照优先级从高到低依次为:工作区专属技能、全局共享技能、出厂自带技能和自定义路径技能。通过流程图展示了从扫描到注册的完整加载流程,并解释了同名技能覆盖规则。随后深入剖析了SKILL.md文件结构,包含YAML元数据定义技能属性和Markdown正文说明使用方法,以公众号写作技能为例展示了具体配置。文章还提供了技能优先级切换的实用技巧,帮助用户灵活管理不同版本的技能。

海兰 239

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

Android 12.0 kenel中修改rom系统内部存储的大小

在12.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出相关的修改,来实现功能

安卓兼职framework和app工程师的博客 1678

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++:类和对象1

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

2401_88251472的博客 1145

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

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

sjj200108的博客 556

C++类与对象

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

qq_75270497的博客 1246

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

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

weixin_73497355的博客 1630

【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的博客 1877

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、付费专栏及课程。

余额充值