建立自己的数据类型
1.封装
一组特定的数据值来描述该对象
对象还包含一组函数,可以使用或改变对象的属性,或者进一步提供对象的属性。
一组数据值,作为类的成员变量,指定对象的属性;一组操作,作为类的成员函数。把这些数据之和函数打包到一个对象中,就称之为封装。
封装的意义:设计类的时候,属性和行为写在一起,表现事物。
1.1访问权限
公共权限 public: 类内和类外都可以访问
保护权限protected:类内可以访问,类外不可以访问 子类可以访问
私有权限private:类内可以访问 类外不可以访问 子类不可以访问
class Person
{
public:
string m_Name;
protected:
string m_car;
private:
int m_Password;
public:
void func()//如果函数是私有的,在主函数中也不可访问
{
m_Name="张三";
m_car="拖拉机";//在主函数里是不能直接修改
m_Password=123456;//在主函数内不能直接修改
}
}
类中的属性和行为统一称为 成员
属性 也叫 成员属性 成员变量
行为 成员函数 成员方法
2.为类内的成员变量赋值
class Student
{
public:
string Name;
int Idcard;
//给姓名赋值
void setName(string name)
{
Name = name;
}
//给学号赋值
void setId(int n)
{
Idcard = n;
}
};
int main()
{
Student st1;//创建一个具体学生 实例化对象
st1.setName("张三");
st1.setId(213);
return 0;
}
2.1struct和class区别
默认的访问权限不同:
struct默认权限为公有
class默认权限为私有
将成员属性设置为私有的好处:1.将成员属性设置为私有,可以自己控制读写权限
2.对于写权限,我们可以检测数据的有效性
3.私有权限成员变量的读与写
读操作
class Person
{
public:
//对于私有的属性可以提供一些接口,来访问,进行读写操作,赋予读写权限
string getName()//读姓名
{
return m_Name;
}
private:
string m_Name;
};
int main()
{
Person p;
cout<<p.getName();
return 0;
}
写操作
class Person
{
public:
//写(设置)姓名
void setName(string name)//写入姓名
{
m_Name = name;
}
private:
string m_Name;
};
int main()
{
Person p;
p.setName("libai");
return 0;
}
p.m_Name="li";
m_Name的权限是私有,不能在类外直接使用
4.数据隐藏
不能直接访问对象的成员变量,只能以一种可控制的方式来修改(在这个过程中可以检查对数据的修改是否正确 )。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步