c++之类和对象:封装

封装

封装的意义:将属性和行为作为一个整体,表现生活中的事物;将属性和行为加以权限控制

#include<iostream>
using namespace std;

//设计一个圆类,求圆的周长
const double pi =3.14;
class Circle
{
	//访问权限
	//公共权限 
public:

	//属性 
	//半径
	int m_r;
	//行为
	//获取圆的周长
	double calculateZC()
	{
		return 2*pi*m_r;
	 } 
 } ; 
int main(){
	//通过圆类  创建具体的圆(对象)
	Circle cl;
	//给圆对象的属性进行赋值
	cl.m_r=10;
	
	cout<<"圆的周长是:"<<cl.calculateZC()<<endl; 
	
	return 0;
} 
#include<iostream>
#include<string>
using namespace std;

//设计一个学生类,属性为姓名和学号 

class Student 
{
	//访问权限
	//公共权限 
public:

	//属性 
	string m_name;
	int m_id;
	//行为
	//显示姓名和学号 
	void showStudent()
	{
		cout<<"姓名:"<<m_name<<"  学号:"<<m_id<<endl;
	 } 
	 void setname(string name)//通过行为给属性赋值 
	 {
	 	m_name=name;
	 }
 } ; 
int main(){
	//实例化对象 
	Student s1;
	//给s1对象的属性进行赋值
	s1.m_name="张三";
	s1.m_id=12;
	
	s1.showStudent();
	
	Student s2;
	s2.setname("李四");
	s2.m_id=2;
	s2.showStudent();
	return 0;
} 

访问权限:
public(公共权限)——类内可以访问 类外也可
protected(保护权限)——类内可以,类外不可
private(私有权限)——类内可以,类外不可

#include<iostream>
#include<string>
using namespace std;


class Person
{
	//访问权限
	//公共权限 
public:

	string m_name;
	//保护权限 
protected:
	string m_car;
	//私有权限
private:
	int m_password;//银行卡密码 
public:
	void func()
	{
		m_name="张三";
		m_car="拖拉机"; 
		m_password=123456;
		cout<<m_name<<m_car<<m_password<<endl;
	 } 
	 
 } ; 
int main(){
	//实例化对象 
	Person p1;
	p1.m_name="李四";
	cout<<p1.m_name<<endl;
	p1.func();
	cout<<p1.m_name<<endl;//覆盖了之前的赋值 
	return 0;
} 

struct和class的区别:

struct默认权限为公共
class默认权限为私有

成员属性设置为私有化

#include<iostream>
#include<string>
using namespace std;

//成员属性设置为私有化 
//好处:可以自己控制读写权限 对于写可以检测数据有效性
 
class Person
{
public:
	//设置姓名
	void setName(string name)
	{
		m_name=name;
	 } 
	 //获取姓名
	 string getName()
	 {
	 	return m_name;
	  } 
	  //获取年龄
	  int getAge()
	  {
	  	m_age=100;
	  	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.setName("张三"); 
	cout<<"姓名为"<<p.getName()<<endl;
	cout<<"年龄为"<<p.getAge()<<endl;
	p.setLover("翠花");//只能设置不能访问 
	return 0;
} 

案例:设计立方体类

#include<iostream>
#include<string>
using namespace std;

//设计立方体类 

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_h*m_l+2*m_h*m_w+2*m_l*m_w;
	}
	int CalculateV()
	{
		return m_h*m_l*m_w;
	}
	bool isSamebyclass(Cube&c)
	
	{
		if(m_l==c.getl()&&m_w==c.getw()&&m_h==c.geth())
		{
			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.getw()==c2.getw()&&c1.geth()==c2.geth())
	{
		return true;
	}
}
int main(){
	Cube c1;//创建立方体对象
	c1.seth(10);
	c1.setl(20);
	c1.setw(3);
	
	cout<<"c1的面积为:"<<c1.CalculateS()<<endl;
	cout<<"c1的体积为:"<<c1.CalculateV()<<endl;
	//创建第二个立方体 
	Cube c2;
	c2.seth(10);
	c2.setl(20);
	c2.setw(3);
	//利用全局函数判断两个立方体是否相等 
	bool ret =isSame(c1,c2);
	if(ret)
	{
		cout<<"c1和c2相等"<<endl; 
	}
	else
	{
		cout<<"c1和c2不相等"<<endl; 
	}
	
	//利用成员函数判断 
	ret=c1.isSamebyclass(c2);
	if(ret)
	{
		cout<<"成员函数判断:c1和c2相等"<<endl; 
	}
	else
	{
		cout<<"c1和c2不相等"<<endl; 
	}
	
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值