当前位置: 首页 > news >正文

C++面向对象编程——封装

C++面向对象的三大特性为:封装、继承、多态

C++认为万事万物都皆为对象,对象上有其属性和行为

例如:

人可以作为对象,属性有姓名、年龄、身高、体重.,行为有走、跑、跳、吃饭、唱歌...

车也可以作为对象,属性有轮胎、方向盘、车灯…行为有载人、放音乐、放空调...

具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类

封装

封装的意义:

①将属性和行为作为一个整体,表现生活中的事物

语法:class 类名{ 访问权限:属性/行为 };

类中的属性和行为,我们统称为成员

属性:成员属性 成员变量

行为:成员函数 成员方法

//圆周率
const double PI = 3.14;//设计一个圆类,求圆的周长
//圆求周长的公式:2*PI*半径
//class代表设计一个类,类后面紧跟着的就是类名称
class Circle{//访问权限//公共权限
public://属性//半径int m_r;//行为//获取圆的周长double calculateZC(){return 2*PI*m_r;}//给半径赋值void set(String name){m_name = name;}
}int main(){//通过圆类创建具体的圆//实例化(通过一个类 创建一个对象的过程)Circle c1;//给圆对象的属性进行赋值c1.m_r = 10;c1.set(10);cout << "圆的周长为:" <<cl.calculateZC()<<endl;}

②将属性和行为加以权限控制

访问权限有三种:

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;}
}int main(){Person p1;p1.m_Name = "李四"p1.m_Car = "奔驰"//保护权限内容,在类外访问不到p1.m_Password = 123;//私有权限内容,类外访问不到}

struct和class的区别

在C++中struct和class唯一的区别就在于默认的访问权限不同

①struct默认权限为公共

②class默认权限为私有

class C1
{int m_A;//默认权限,是私有
};struct C2
{int m_A;//默认权限,是公共
};int main(){//在class里默认权限 私有,因此类外不可以访问C1 c1://在struct默认的权限为公共,因此可以访问C2 c2:c2.m_A = 100;
}

成员属性设置为私有

优点:

①将所有成员属性设置为私有,可以自己控制读写权限

②对于写权限,我们可以检测数据的有效性

class Person{
public:void setName(string name){m_Name = name;}string getName(){return m_Name;}int getAge(){return m_Age;}//设置年龄(0~150)int setAge(int Age){if(Age<0 || Age>150 ){cout<<"年龄输入有误,赋值失败"<<endl;return;}m_Age = Age;}void setIdol(string idol){m_Idol = idol;}private:string m_Name;	//可读可写int m_Age = 18;	//只读string m_Idol;	//只写}int main(){Person p;p.seyName("张三");cout<<"姓名:"<<p.getName()<<endl;p.setAge(20);p.m_Age = 20;cout<<"年龄:"<<p.getAge()<<endl;p.setIdol("小明");cout<<"偶像:"<<p.setIdol()<<endl;    }

静态成员

静态成员就是在成员变量和成员函数前加上关键字static,成为静态成员变量

静态成员变量分为:

1、静态成员变量

①所有对象共享同一份数据

②在编译阶段分配内存

③类内声明,类外初始化

//类内声明,类外初始化
class Person{
public:static int m_A;//静态成员变量也是有访问权限的
private:static int m_B;
};
int Person::m_A = 100;
int Person::m_B = 200;void test01(){Person p;cout << p.m_A <<endl;Person p2;p2.m_A = 200;cout <<p.m_A <<endl;
}//静态成员变量,不属于某个对象上,所有对象都共享同一份数据
//因此静态成员变量有两种访问方式
void test02(){//通过对象进行访问Person p;cout << p.m_A <<endl;//通过类名进行访问cout <<Person::m_A <<endl;//类外访问不到私有静态成员变量cout <<Person::m_B <<endl;
}

2、静态成员函数

①所有对象共享同一个函数

②静态成员函数只能访问静态成员变量

class Person{
public:static void func(){m_A = 100;//静态成员函数可以访问静态成员变量m_B = 200;//静态成员函数不可以访问非静态成员变量cout << "static void func调用" <<endl;}static int m_A;int m_B;
//静态成员函数也是有访问权限的
private:static void func2(){cout << "static void func2调用" << endl;}
};
int Person::m_A=0;void test01(){//通过对象访问Person p;p.func;//通过类名访问Person::func();//类外访问不到私有静态成员函数Person::func2();
}

http://www.dtcms.com/a/415880.html

相关文章:

  • 优秀设计作品网站seo综合查询平台官网
  • 海城区建设局网站工会门户网站建设需求
  • 武汉市最新街景图像数据!
  • 自己动手创建一个公司网站国家通建设通网站
  • Docker(二)—— Docker核心功能全解析:网络、资源控制、数据卷与镜像构建实战
  • 百度网站大全首页网站源码免费下载
  • 网站的策划建设方案书负面信息网站
  • 绍兴网站建设方案推广微信公众平台绑定网站
  • 计算机网路-TCP
  • 做网站用哪个预装系统源码建站之网站建设
  • Hadoop完全分布式配置
  • 实用主义观点下的函数式编程思想
  • 服务器及网站建设的特点温州品牌网站建设
  • H618-开发板运行第一个Hello World
  • 青岛网站建设市场分析安徽龙山建设网站
  • 珠海网站建设王道下拉惠太原网站seo外包
  • 门户网站怎么做seo乐清网站
  • 贪心:保卫花园
  • 东莞专业微网站建设价格哪个浏览器可以进wordpress
  • HashMap和Hashtable
  • 做个网站得花多少钱建成区违法建设治理网站
  • 革新深层水平位移监测——安锐科技推出全新节段式位移计,以模块化设计显著降低成本
  • 赣州企业网站在那做网站域名的管理密码如何索取
  • 网站建设与管理大纲天津科技公司网站
  • 网站开发与维护是什么企业网站需要什么功能
  • 【有源码】基于python+spark的餐饮外卖平台综合分析系统-基于Hadoop生态的外卖平台数据治理与分析系统
  • 【心力建设】《毛选》里的心法
  • 浙江网站建设有哪些合肥seo排名优化
  • 如何制作课程网站模板用python做网站的步骤
  • 光纤测温技术:原理与应用全解析