建立自己的数据类型

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.数据隐藏

不能直接访问对象的成员变量,只能以一种可控制的方式来修改(在这个过程中可以检查对数据的修改是否正确 )。