C++:类与对象3

本文探讨C++中的类与对象,重点讲解this指针的作用,如何在成员函数中区分同名变量,以及如何通过return *this实现链式操作。此外,还介绍了常函数和常对象的概念,以及如何使用友元来允许外部访问类的私有成员。最后,列举了友元的三种实现方式:全局函数、类以及成员函数作为友元。
摘要由CSDN通过智能技术生成

继续写一下类和对象的一些知识;

类中的成员变量和成员函数是分开存储的,只有非静态成员变量才属于类的对象上,静态成员变量存储在静态区。

在下列代码中,分别定义非静态成员变量和静态成员变量,来计算类的对象的大小,以验证创建的变量是不是存储在类上。

计算类的大小所用的函数为:

void test01()
{
	Person p;
	cout << "size of p =" << sizeof(p) << endl;
}

首先应该明确:    

    空对象占用内存空间为1
    c++编译器会给每个空对象也分配一个字节空间,为了区分空对象占内存的位置

所以:

class Person
{};

大小为1个字节;

然后为为类分别添加非静态和静态的成员变量和成员函数,逐次验证类的大小,得到以下结论:

只有非静态成员变量属于类的对象上,增加类的大小;

静态成员变量和成员函数(静态和非静态)都不属于类的对象上,不增加类的大小;

class Person
{
	int m_A;//非静态成员变量 属于类的对象上  只有这种变量属于类的对象上
	static int m_B;//静态成员变量 共享,不属于类的对象上,不增加类的大小
	void func()//非静态成员函数 不增加类的大小
	{}
	static void func2() {}//静态成员函数 共享,不属于类的对象上,不增加类的大小
};
int Person::m_C = 0;

this指针

this指针 - 指向被调用的成员函数所属的对象
1、当形参和成员变量同名时,可用this指针来区分 - 解决名称冲突
2、在类的非静态成员函数中返回对象本身,可用return *this

首先创建一个Person类:

包含有参构造函数

clas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值