封装是C++面向对象的三大特性之一。
其意义是:
1)将属性和行为作为一个整体,表现生活的事物。
2)将属性与行为加以权限控制。
2、封装意义一。
在设计类的时候,属性与行为写在一起,表现事物。
语法:
class 类名{
访问权限:
属性 --> 一般指的是变量
行为 --> 一般指的是函数
};
3、封装意义二。
类在设计的时候,可以把属性与行为放在不同的权限下,加以控制。
访问权限有三种:
1)public 公共权限 类内可以访问 类外可以访问
2)protected 保护权限 类内可以访问 类外不可以访问 子类可以访问父类中的保护内容
3)private 私有权限 类内可以访问 类外不可以访问 子类不可以访问父类中的私有内容
成员属性设置为私有。
优点1: 将所有成员属性设置为私有,可以自己控制读写权限。
优点2: 对于读写权限,我们可以检测数据的有效性。//防止输入错误的数据
属性如果设置为私有,如果我想给你访问,那么我就提供接口,如果不想给你访问,我就不提供接口。
当我们把年龄输入999时,就会提示错误,这样以后我们在复杂的代码中如果输入了错误的数据的话就会有一个检测作用
#include<iostream>
#include<string.h>
using namespace std;
class Person
{
public:
void setname(string name)
{
m_name = name;
}
string getname()
{
return m_name;
}
//将年龄设置为可读可写的 ,但年龄有一定的范围,超过这个范围就为无效。
void setage(int age)
{
if (age < 0 || age>150)//限制一个范围
{
cout << "输入有误" << endl;
age = 0;
}
m_age = age;
}
int getage()
{
//int age = 20;
return m_age;
}
void setlover(string lover)
{
m_lover = lover;
}
private:
//姓名 可读可写
string m_name;
//年龄 只读
int m_age;
//情人 只写
string m_lover;
};
int main()
{
Person p;
//p.m_name = "sd";//私有权限,不可访问
p.setname("carbon");
cout << "姓名为:" << p.getname() << endl;
//年龄
//p.getage = 88;//有错误,不能修改年龄
p.setage(999);
cout << "年龄为:" << p.getage() << endl;
//情人 只写
p.setlover("hello");//设置情人
system("pause");
return 0;
}