静态成员与友元,内部类初识

本文详细介绍了C++中的静态成员、静态成员变量的特性与使用,友元的作用以及如何在运算符重载中应用,以及嵌套类的定义、格式和注意事项,强调封装和访问权限的重要性。
摘要由CSDN通过智能技术生成

一.静态成员

1.静态成员变量

(1)定义:

类的定义中以静态声明的变量

(2)写法:

static +变量声明

(3)注意:

静态成员变量不在对象中,在静态区,所以不走初始化列表,只能在外部定义。

1.不能给缺省值--->给了缺省值就会进初始化列表,找不到变量,出错

2.不能在初始化列表中写

3.外部定义时不能加static--->规定(类域限定符不包含static就会让其一般处理,即定义一个外部的新的变量)

4.调用:静态成员变量是属于这个类的,也属于每个对象,可以通过域名调,也可以通过对象调(要是public访问限定符)(突破类域)

5.类大小不包含静态成员变量(在静态区)

(4)用法:

1.统计已经创建了多少对象/现存多少对象

2.与创建对象/调用成员函数有关的计数

2.静态成员函数

1.定义:属于整个类的不能访问特定非静态成员的函数

2.写法:static +函数声明

3.调用:(同静态成员变量)

(属于整个类和对象)

1.通过类指定调用

2.通过特定对象调用

4.使用:

没有this指针,访问不了特定非静态成员变量,只能访问静态成员

5.实际使用

1.如果类中有私有静态成员变量,可以只使用静态成员函数,让其只能访问静态成员,可以保证访问安全性,通过类直接调用,更快捷。

二.友元

1.引子:

在运算符重载为全局,不能直接访问类里的私有成员,除非:getter或友元。

2.定义:友元是一种声明,将类/函数声明为类的友元,可以让其访问类中的所有成员

3.格式:friend 加函数/类的声明

4.使用:

1.运算符全局重载(较麻烦)

2.外部类为内部类的友元

3.函数为类的友元

4.类为类的友元

5.注意:

1.友元声明可以写在类中的任意位置,不被类中访问限定符限制

2.友元关系为单向的,不可继承,传递

3.友元可以访问类保护的私有成员但不是类的成员函数->没有this指针的概念

4.不能被const修饰->没this指针概念

5.不能多用,破坏了封装

6.成员函数声明为另一个类的友元

(1)成员函数必须写在调用类的定义的后面、(2)包含成员函数的类的定义要写在调用类之前

注意:成员函数声明为另一个类的友元,仍然不能访问类中的其他类的对象成员--->类中访问成员变量权限是通过类的访问权限,而不是成员函数的访问权限。

三.嵌套类

一.定义

1.类的内部有另一个类的定义,内部类为外部类的友元。

二.格式

外部类的内部定义另一个类。

三.本质

1.两个类实质是分离的,不存在成员关系,使用相当于外部类的this指针指向内部类

四.注意

1.使用:(1)外部类不能直接访问内部类。

(2)内部类天生为外部类的友元

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值