2.类和对象
C++面向对象的三大特性为:封装、继承、多态。
C++认为万事万物都是对象,对象有属性和行为。
具有相同性质的对象可以抽象为类。
2.1封装
2.1.1封装的意义
①设计类的时候,将属性和行为作为一个整体,表现生活中的事物。
②将属性和行为加以权限控制
语法:
class 类名
{
访问权限:属性/行为
};
2.1.2访问权限
访问权限有三种:
1.public 公共权限//类内可以访问,类外可以访问
2.protected 保护权限//类内可以访问,内外不可以访问
3.private 私有权限//类内可以访问,类外不可以访问
2.1.3struct和class的区别
在C++中struct和class的唯一区别就在于默认的访问权限不同
struct的默认访问权限为公共,class的默认访问权限为私有。
代码演示:
#include<iostream>
using namespace std;
#include<string.h>
struct stu
{
string _name;
};//利用struct创建类
class teacher
{
string _name;
};//利用class创建类
int main()
{
stu s;
s._name = "李华";
cout << s._name << endl;
teacher t;
t._name = "王红";
cout << t._name << endl;
return 0;
}
2.1.4成员属性设置为私有
优点1:将所有成员属性设置为私有,读写权限可以自己控制。
优点2:对于写权限,可以检测数据的有效性。
代码演示:
①自己控制读写权限
#include<iostream>
using namespace std;
class teacher
{
public:
//设置公共接口
//姓名设置为可读可写
//设置姓名
void setname(string Name)
{
_name = Name;
}
//获取姓名
string getname()
{
return _name;
}
//年龄设置为只可写
//设置年龄
void setage(int Age)
{
_age = Age;
}
private:
//成员属性设置为私有
string _name;
int _age;
};
int main()
{
teacher t;
//利用公共接口访问变量
t.setname("李华");
cout << t.getname() << endl;
return 0;
}
②检测数据的有效性
#include<iostream>
using namespace std;
class teacher
{
public:
//设置公共接口
//年龄设置为只可写
//设置年龄,并对输入数据有效性检测
void setage(int Age)
{
if (Age < 0)
{
cout << "年龄信息输入有误,自动为您设置为-1岁" << endl;
_age = Age;
}
else
_age = Age;
}
private:
//成员属性设置为私有
int _age;
};
int main()
{
teacher t;
t.setage(-1);
return 0;
}
输入不规范数据验证