C++梁哥笔记day5
类和对象
一、封装
- 把变量(属性)和函数(操作)合成一个整体,封装在一个类中
- 对变量和函数进行访问控制,访问权限的设置(公有的、私有的、保护的)
- 在类的内部(作用域范围内),没有访问权限之分,所有成员都可以相互访问
- 在类的外部,访问权限才有意义:public、protected、private
- 在类的外部,只有public修饰的成员才能被访问,在没有涉及继承与派生时,private和protected是同等级的,外部不允许访问。
访问属性 | 属性 | 对象内部 | 对象外部 |
---|---|---|---|
public | 公有 | 可访问 | 可访问 |
protected | 保护 | 可访问 | 不可访问 |
private | 私有 | 不可访问 | 不可访问 |
权限是对外不对内的
二、类的初始
1 | class 类名{//抽象的概念 系统不会为其分配空间 |
系统不会为类分配空间但是他占有空间,当实例化或定义一个对象的时候系统才会为其分配空间
- class与struct的区别:class默认访问权限为private,struct默认访问权限为public。
将成员变量设置为private
- 可以赋予客户端访问数据的一致性。如果成员变量不是public,客户端唯一能够访问对象的方法就是通过成员函数。如果类中所有public权限的成员都是函数,客户在访问类成员时只会默认访问函数,不需要考虑访问的成员需不需要添加(),这就省下了许多搔首弄耳的时间。
- 可细微划分访问控制。使用成员函数可使得我们对变量的控制处理更加精细。如果我们让所有的成员变量为public,每个人都可以读写它。如果我们设置为private,我们可以实现不准访问、只读访问、读写访问,甚至你可以写出只写访问。
练习
请设计一个Person类,Person类具有name和age属性,提供初始化函数Init(),并对name和age的读写函数set()、get(),但必须确保age的赋值在有效范围0~100,超出有效范围,拒绝赋值,并提供方法输出姓名和年龄。
1 | class Person{ |
运行结果: