B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
备注:有2层含义(把属性和方法进行封装 , 对属性和方法进行访问控制)
C++中类的封装
成员变量,C++中用于表示类属性的变量
成员函数,C++中用于表示类行为的函数
C++中提供一个新的关键字 class, 用来定义类,使用方式和struct基本相同
类的访问控制关键字:对属性和方法的使用权限进行限制
public (公有属性): 可以在类的内部和类的外部访问
private(私有属性) : 可以在类的内部但不能在类的外部访问
protect(保护属性):可以在类的内部访问,但不能在类的外部访问
类所占空间大小的计算方式与结构体一样(忽略类内部的函数,函数放在代码段中)
类的默认属性是私有属性,结构体的默认属性是公有属性。
使用类的公有成员和结构体一样
class Student
{
public:
void setID(int _id)
{
id = _id;
}
void setName(char *_name)
{
name = _name;
}
void show()
{
printf("id = %d, name = %s\n", id, name);
}
//获取私有变量
char *getName()
{
return name;
}
private:
int id;
char *name;
};
int main()
{
//定义一个类的变量 我们将这个变量叫做 该类的一个对象
Student s, s1, s2;
//为类的私有成员赋值需要一个公有内部函数进行操作s.setID(1);
s.setName("笑笑");
s.show();
s1.setID(2);
s1.setName("西卡");
s1.show();
s2.setID(3);
s2.setName("斯蒂芬");
s2.show();
printf("s1 名字是:%s\n", s1.getName());return 0;
}
类的使用规范:
类的声明和类的实现要分开,类的声明放在头文件中,类的实现放在源文件中
eg:
头文件
#ifndef __STUDENT_H__
#define __STUDENT_H__
// 类的声明
class Student
{
public:
//内部函数只需在类中写函数的声明,
void init(int id, char *name);
private:
int _id;
char *_name;
};
#endif // __STUDENT_H__
Student源文件
#include "Student.h"
//需要表明 init 函数是 类Student 中的函数: init(函数名)前加上 类名 和 域解析符::
void Student::init(int id, char *name){
_id = id;
_name = name;
}
main函数文件
#include <iostream>
#include "Student.h"
using namespace std;
int main()
{
Student s;
return 0;
}