C++学习记录---类和对象---封装

一、封装

c++面向对象的三大特性为:封装、继承、多态
封装的意义:将属性和行为作为一个整体,表现生活中的事物;将属性和行为加以权限控制

二、案例

//创建一个圆类
class Circle()
{
	//访问权限
	//公共权限
public:
	//属性
	int m_r;
	//行为
	double calculateZC()
	{
		return 2*PI*m_r;	
	}
};
int main()
{
	//实例化类---对象
	Circle c1;
	c1.m_r = 10;
	cout<<"圆的周长为:"<< cl.calculateZC() <<endl;
	return 0;
}
//创建一个学生类
class Student()
{
	//访问权限
	//公共权限
public:
	//属性(成员属性,成员方法)
	string m_Name;
	int m_Id;
	//行为(成员函数,成员方法)
public:
	void showStudent()
	{
		cout<<"姓名:"<< m_Name <<"学号:"<< m_Id <<endl;;	
	}
	void setName(string name)
	{
		m_Name = name;
	}
	void setId(int id)
	{
		m_Id = id
	}
};
int main()
{
	//实例化类---对象
	Student Stu;
	Stu.setName("德玛西亚");
	Stu.setId(10);
	Stu.showStudent();
	return 0;
}

三、权限

公共权限 public 成员 类内可以访问 类外可以访问
保护权限 protected 成员 类内可以访问 类外其子类可以访问
私有权限 private 成员 类内可以访问 类外不能访问

//创建一个学生类
class Father()
{
	//公共权限
public:
	string m_Name;
	//保护权限
protected:
	string m_Car;
	//私有权限
private:
	int m_Id;
	//行为(成员函数,成员方法)
public:
	void ()
	{
		n_Name = "张三";
		m_Car = "兰博基尼";
		m_Id = 123456;
	}
}
int main()
{
	//实例化类---对象
	Father f1;
	f1.m_Name = "李四";//可以访问
	//f1.m_Car = "拖拉机";//不能访问
	//f1.m_Id = 1234456788;//不能访问
	//f1.func();//不能访问
	return 0;
}

四、class与struct的区别

class与struct均可以创建类
class默认权限是私有权限,struct默认权限是公共权限

五、成员属性修改

class Person()
{
public:
	//姓名设置可读可写
	void setName(string name)
	{
		m_Name = name;
	}
	string getName()
	{
		return m_Name; 
	}
	//只读年龄
	void getAge()
	{
		return m_Age;
	}
	//只写爱人
	void setLover(srting lover)
	{
		m_Lover = lover
	}
private:
	string m_Name;//可读可写
	int m_age = 10;//只读
	string m_lover;//只写
}
int main()
{
	Person p1;
	//姓名可读可写
	p1.setName("张三");
	cout<<"姓名:"<<p1.getName()<<endl;
	//年龄只读
	cout<<"年龄:"<<p1.getAge()<<endl;
	//爱人只写
	p1.setLover("苍井")
	return 0;
	
}

六、封装案例

class cube()
{
public:
	//设置、获取长度
	void setL(int l)
	{
		m_l = l;
	}
	int getL()
	{
		return m_l;
	}
	//设置、获取宽度
	void setW(int w)
	{
		m_w = w;
	}
	int getW()
	{
		return m_w;
	}
	//设置、获取高度
	void setH(int h)
	{
		m_h = h;
	}
	int getH()
	{
		return m_h;
	}
	//获取立方体面积
	int calculateS()
	{
		return 2*m_l*m_h + 2*m_l*m_w + 2*m_h*m_w;
	}
	//获取立方体体积
	int calculateV()
	{
		return m_l*m_h*m_w;
	}
	//利用成员函数判断俩个立方体是否想等
	bool isSamebyClass(Cube &c)
{
	if(c.getL() = m_l && c.getH() = m_h && c1.getW() = m_w)
	{
		return true;
	}
	return false;
}
private:
	int m_l;
	int m_w;
	int m_h;
}
//利用全局函数判断俩个立方体是否想等
bool isSame(Cube &c1, Cube &c2)
{
	if(c1.getL() = c2.getL() && c1.getH() = c2.getH() && c1.getW() = c2.getW())
	{
		return true;
	}
	return false;
}
int main()
{
	//创建第一个立方体
	Cube c1;
	c1.setL(10);
	c1.setH(10);
	c1.setW(10);
	cout<<"面积为:"<< c1.calculateS() << endl;
	cout<<"体积为:"<< c1.calculateV() << endl;
	//创建第二个立方体
	Cube c2;
	c2.setL(10);
	c2.setH(10);
	c2.setW(10);
	cout<<"面积为:"<< c2.calculateS() << endl;
	cout<<"体积为:"<< c2.calculateV() << endl;
	//全局函数判断
	ret = isSame(c1,c2);
	if(ret)
	{
		cout<<"全局函数判断:c1与c2是相等的"<<endl;
	}
	else
	{
		cout<<"全局函数判断:c1与c2是不相等的"<<endl;
	}
	//成员函数判断
	ret = cl.isSamebyClass(c2);
	if(ret)
	{
		cout<<"成员函数判断:c1与c2是相等的"<<endl;
	}
	else
	{
		cout<<"成员函数判断:c1与c2是不相等的"<<endl;
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值