类和对象(下)

1.再探构造函数

之前我们实现构造函数时,初始化成员变量主要使用函数体赋值,构造函数初始化还有一种方法,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个“成员变量”后面跟一个放在括号中的初始值或表达式。

像这样就是初始化列表。

         每个成员变量再初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量初始化的地方。

        初始化列表中按照成员变量再类中声明顺序进行初始化,跟成员再初始化列表出现的先后顺序无关。建议声明顺序和初始化列表顺序保持一致。

注意:当我们的成员变量里有const修饰的常量和引用的时候,就必须要初始化,否则就会报错。

因为const修饰的常量和引用在定义的时候就必须要初始化。

        对于自定义类型,如果没有默认构造函数可用,也必须初始化。

2.static成员

用static修饰的成员变量,称之为静态成员变量,静态成员变量一定要在类外进行初始化

静态成员变量为所有类对象共享,不属于某个具体的对象,不存在对象中,存放在静态区。

用static修饰的成员函数,称之为静态成员函数,静态成员函数没有this指针。

静态成员函数中可以访问其它的静态成员,但是不能访问非静态的,因为没有this指针。

非静态的成员函数,可以访问任意 静态成员变量和静态成员函数。

静态成员也是类的成员,受public ,protected,private访问限定符的限制。

3.友元

友元提供了一种突破类访问限定符封装的方式,友元分为:友元函数和友元类,在函数声明或者类声明的前面加上friend,并且把友元放到一个类里面。

外部友元函数课访问类的私有和保护成员,友元函数仅仅是一种声明,他不是类的成员函数。

友元函数可以在类定义的任何地方进行声明,不受类访问限定符的限制。

一个函数可以是多个类的友元函数。

友元类中的成员函数都可以是另一个类的友元函数,都可以访问另一个类中的私有和保护成员。

友元类的关系是单向的,不具有交换性,比如A是B类的友元,但B不是A的友元。

友元关系不能传递,比如A是B的友元,B是C的友元,但A不是C的友元。

4.内部类

如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,跟定义在全局相比,它只是受外部类类域限制和访问限定符,所以外部类的对象中不包含内部类。

内部类默认是外部类的友元类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值