C++核心编程——对象模型和this指针+友元

本文详细介绍了C++中类的成员变量与成员函数的存储方式,强调了空对象内存占用和this指针的作用。this指针用于在成员函数中标识调用对象,且在处理空指针调用成员函数时需要注意。同时,探讨了const修饰的常函数和常对象,以及如何在常函数中修改mutable成员。最后,阐述了友元的概念,包括全局函数、类和成员函数作为友元的实现,以实现对私有成员的访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、成员变量和成员函数分开存储

再C++中,类内得成员变量和成员函数分开存储只有非静态成员变量才属于类得对象上

//空对象占用内存空间为:1

//C++编译器会给每个空对象也分配一个字节空间,是为了区分对象占内存得位置

//每个空对象也应该有一个独一无二得内存地址

二、this指针

每一个非静态成员只会诞生一份函数实例,也就是说多个同类型得对象会共用一块代码

C++通过提供特殊得对象指针,this指针解决上述问题

this指针指向被调用得成员函数所属得对象

this指针得用途:

当形参和成员变量同名是可以用this区分

在类得非静态成员函数中返回对象本身可用return *this

三、空指针访问成员函数

C++中空指针也是可以调用成员函数得但是也要注意有没有用到this指针

如果用到this指针,需要确保代码健壮性可用下列方法解决:

if(this==NULL)

{

return;

}

四、const修饰函数

常函数:

成员函数加const后我们称为这个函数为常函数

常函数内不可以修改成员属性

成员属性声明时加入关键字mutable在常翰苏中依然可以修改

常对象:

声明对象钱加入const称该对象为常对象

常对象之恩调用常函数

//this指针的本质是指针常量,指针的指向是不可以修改的

//想要修改,前加mutable int m_B;(不管在常函数还是常对象,加入了就都可以修改)

五、友元

在程序里有些私有属性也想让类外特殊的函数或者进行访问就需要用到友元的技术

友元的目的就是让一个个函数或者类访问一个类中私有成员

友元的关键字为friend

友元的三种实现:

全局函数做友元——》在类用friend申明全局函数

类做友元

成员函数做友元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值