day03

  1. static修饰类的成员

回顾一下C中的static的作用

<1>static修饰全局变量:限制全局变量的作用域

<2>static修饰局部变量:延长局部变量的生命周期

<3>static修饰函数: 限制了函数的作用域

案例:

学生类 学生学号想让它自增,如何实现?

  1. static修饰类的数据成员

初始化:类内声明,类外初始化

类的静态数据成员特点:

  1. 属于类但是不属于某一个对象;所有的对象共用一个变量

  1. 没有对象也可以进行访问

访问:

1. 类名::变量名;

2. 对象名.变量名; 指针类型对象名->变量名;

解决问题:

当我们想要实现数据共享的时候,就可以使用类的静态的数据成员!

例如: 统计个数、ID自增!

  1. static修饰类的成员函数

特点:

  1. 静态的成员函数没有this指针;

  1. 静态的成员函数只能访问静态的成员,不能访问非静态成员

  1. 非静态的成员函数可以访问静态的成员

访问:

类名::成员函数();

对象.成员函数(); 指针对象->成员函数();

应用: 共享

案例:

设计一个Ctool类,然后这个类就是用来做共享,说明这个类里面的成员函数都设计成静态!

Class Ctool

{

Static voidgotoxy(int x, int y);

Static voidpaintWindow(int x, int y, int w, int h);

};

使用: 类名::gotoxy(10,20);

  1. const修饰类的成员

回顾const作用:

Const int b = 10; // b的值不可以修改

const int *a = &b; // *a不可以修改,a的值是可以变化的

int * const a= &b; // a的值不可以修改, 但是*a的值是可以变化的

const的右侧是什么,什么不能变!

2-1. const修饰类的数据成员

Const修饰数据成员,数据成员的值是不可以修改的!

如何初始化:

使用初始化列表的方式,在构造函数首部的后面;这个类的所有的构造函数都要用初始化列表对const修饰的数据成员进行初始化

非const修饰的数据成员也可以使用初始化列表进行初始化

应用场景:就是一些类的数据成员值一旦设计好了是不可以修改的,例如身份证ID

2-2、const修饰的成员函数

<1>const修改的成员函数就变成了常函数,本质上修饰的隐藏起来的参数 this!

只能访问成员但是不能修改。

<2>const修饰的成员函数中是不能调用非const修饰的成员函数的!

<3>非const修饰的成员函数中是可以调用const修饰的成员函数的

应用: 例如教务系统中我们只能查看成绩,成绩有问题是不能自己去修改!

  1. const修饰类的对象

const修饰的类对象(常对象),不能调用非const修饰的成员函数;只能调用const修饰的成员函数!

常对象只能调用常函数!

笔试题目:问程序的输出结果

用const修饰了成员函数,这个函数就不能对数据成员进行修改,如果我在一种特殊的情况下,一定要修改数据成员的值,怎么办?

  1. mutable关键字

作用:解决const修饰的成员函数中没法修改数据成员值的问题

使用: 就是在数据成员声明的前面加上 mutable

尽量少用!!!因为他其实会破坏我们类封装的完整性!除非万不得已!

  1. 友元

友元就是朋友的意思!

关键字: friend

什么时候选择用友元:多次频繁的访问或者修改类的数据成员的时候

解决问题:

<1>普通的函数做类的友元

注意:

友元函数不是类的成员函数,所以不受类的访问限定符的限制!

<2> 一个类的成员函数做友元:类中的成员函数要频繁的访问另外一个类的数据成员

  1. 类要做前向声明

  1. 类中的成员函数要类的外部去定义

<3>整个类做朋友:类中的多个成员函数要频繁的访问另外一个类的数据成员,将整个类作为朋友!

存在的问题:

友元会破坏类封装的完整性!没有特殊情况尽量不使用!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值