C++类与对象Plus

文章介绍了C++中类与对象的初始化列表的使用,特别是在处理const对象和static成员变量时的重要性。初始化列表用于在对象创建时初始化成员变量,特别是对const和static变量的初始化。static成员变量不属于任何特定对象,而是属于类本身,其生命周期与类相同。static成员函数没有隐含的this指针,可以直接通过类名调用,且不能访问私有成员变量。
摘要由CSDN通过智能技术生成

我们之前讲的都是类与对象的基础,以及类中的几个默认函数等,今天我们就讲一下类与对象的其他东西

初始化列表

在我们的默认构造函数的时候,我们在初始化的时候我们都是在构造函数中完成我们的初始化任务

我们现在来看一个类

我们看一下我们的这个类,如果我们的这个类需要初始化的化,我们需要怎么初始化呢??

 

我们可以这样初始化吗??  不可以!

首先是const类型的对象,我们的const类型的对象只有一次初始化的机会,就是在对象定义的时候,但是我们的构造函数是在构造一个对象,所以当我们走到构造函数的括号里时,我们的这个对象就以及拥有了,所以我们就不可以对const的对象进行赋值了,所以我们应该怎么办呢??

这里就提到了我们的初始化列表

 

这里就是我们的初始化列表,因为有一些值时必须在定义的时候初始化号,所以我们就必须使用到初始化列表

我们来看一下

 

我们的A a变量现在就被初始化好了,其中我i们也可以不用这样,我们还可以这样

 

我们可以性和杨,在类的声明那里直接给值,但是记住这里时声明并不是定义,这里也是C++后面的语法,为了处理C++的构造函数对内置类型不处理搞的,而这里的const int _a = 0里面的赋值0并不是在初始化的时候给,而是给了初始化列表,我们这里要清楚的是,我们不论写不写初始化列表 ,我们的对象初始化的时候都会走初始化列表

我们也可以看一下其他的初始化列表的使用

 

我们看到我们的A a对象被初始化了,同样我们还可以给值

 我们看到,是可以的

这就是初始化列表

static 成员变量

我们在看一下 static成员变量

对于static的局部变量,我们的局部变量的生命周期就会增加,生命周期和进程的生命周期相同,那么如果是static的成员变量呢??

我们来看一下,我们的这个类的大小是多少呢??

 

OK,是4

我们这里有两个变量,其中一个是int 的,另一个是static int 的,但是我们这里只有4,说明我们的static int 的这个变量并未计算到A这个类的对象中,所以我们就能说明,我们的a变量是属于整个类的,而并不属于单个对象

而我们的这个对象的初始化也是不一样

我们的初始化 也是需要这样初始化

我们继续看一下

 

我们这里看到我们对a变量加了一次,但是我们的a1和a2变量里面的a对象都是11所以这里更说明我们的static对象是属于类的,而不属于对象

static 成员函数 

我们刚才看了static的成员变量,我们现在看一下static的成员函数

这里就直接说static成员函数的特征了,对于我们的成员函数而言,我们的成员函数有隐藏的this指针,而我们的static的成员函数没有隐藏的this指针,而我们的static的函数调用也是不一样,我们可以不使用对象调用,我们可以直接使用类和类作用限制符调用

我们来看一下

当然,也并不是我们不可以用对象调用

 

 

我们看到是可以的

那么我们的static的成员函数可以访问私有的成员变量吗??

 

其实这里我们想一下也知道不可以,为啥呢??

因为我们刚才讲了,我们的static成员函数没有this指针,所以我们也就无法通过我们的this指针去访问我们的 private成员变量

OK今天就到这里~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naxx Crazy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值