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

网站建设方案 云盘网站系统

网站建设方案 云盘,网站系统,云建站公司,软件系统定制开发一、封装的意义封装是C面向对象三大特性之一语法: class name { 访问权限:属性行为 };注意:类中的属性和行为 统称为成员属性 又称 成员属性 / 成员变量行为 又称 成员函数 / 成员方法封装将属性和行为作为一个整体,表现生活中的事物例①&…

一、封装的意义

封装是C++面向对象三大特性之一

语法:

class name
{
访问权限:属性行为
};

注意:类中的属性和行为 统称为成员

属性 又称 成员属性 / 成员变量

行为 又称 成员函数 / 成员方法

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


例①:接下来创建一个圆类,以计算圆的周长

创建圆类:

// 创建一个 圆 类,class后跟着的就是类的名称
class Circle
{// 访问权限
public:// 公共权限// 属性int r; // 半径// 行为double caculate_perimeter() // 计算圆的周长{return 2 * PI * r;}
};

主函数

实例化:通过类创建一个对象的过程
#define PI 3.14
int main()
{    //   实例化:通过类创建一个对象的过程Circle c; // 通过 圆 类创建具体的圆(对象) cin >> c.r; // 给 圆 对象 的属性赋值cout << "半径为" << c.r << "的圆的周长为" << c.caculate_perimeter() << endl;return 0;
}

例②:设计一个学生类,属性有姓名和学号,行为可以给学生姓名和学号赋值,而且可以显示学生姓名和学号
class student
{
public:// 属性:姓名 学号string s_name;int s_number;// 行为:给姓名与学号赋值/显示void show(){cout << "学生姓名为" << s_name << endl;cout << "学生学号为" << s_number;}// 赋值void assignment1() // 键盘输入{cout << "请输入姓名" << endl;cin >> s_name;cout << endl;cout << "请输入学号" << endl;cin >> s_number;}void assignment2(string name,int Studnet_number)// 直接传参{s_name = name;s_number = Studnet_number;}
};

对于给姓名和学号赋值,有2种方法

1是直接键盘cin

2是调用函数时直接传参

方法不同,调用函数时写法也不同

int main()
{student s1;s1.assignment1();   //1键盘cin输入s1.assignment2("joyce", 32054123); // 2直接传参s1.show();return 0;
}
  1. 将属性和行为加以权限控制

类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有3种:

名称

作用范围

不同点

public

公共权限

类内可以访问,类外可以访问

\

protected

保护权限

类内可以访问,类外不可以访问

继承关系中,子可以使用父的

private

私有权限

类内可以访问,类外不可以访问

继承关系中,子不能使用父的

例:

class person
{
public:string name;// 姓名,公共权限protected:string car;// 汽车,保护权限private:int password;// 密码,私有权限
};int main()
{person p;p.name = "joyce";// 只有公共权限在类外才可以访问p.car = "BMW";p.password = 131221;return 0;
}

不过,如果在类内定义一个公共权限的函数,以访问各个权限的属性,则

class person
{
public:string name;// 姓名,公共权限protected:string car;// 汽车,保护权限private:int password;// 密码,私有权限public: //类内定义的公共权限的函数void func(){string name = "nana";string car = "BMW";int password = 19931312;}
};

在main函数中调用func函数,则可以访问保护权限和私有权限的属性

    p.func();

不过若是将函数的权限从public改为protected或是private,则仍然无法访问

二、struct与class的区别

区别在于 默认的访问权限不同

名称

默认访问权限

struct

public

公共权限

class

private

私有权限

创建struct和class两个类型

struct P1
{int a;
};
class P2
{int a;
};

在main函数中创建变量并尝试访问

int main()
{P1 p1; // 结构体p1.a = 5;P2 p2; // 类p2.a = 5;return 0;
}

三、成员属性设置为私有

作用:

  1. 可以自己控制成员的读写权限

class My
{
public:void setname(string name)// 设置姓名{m_name = name;}string getname() // 返回姓名{return m_name;}int getage() // 返回年龄,无法修改{return age;}void setPassword(int password) // 修改密码,无法查看{m_Password = password;}
private:string m_name; // 设置为可读可写int age = 5; // 设置为只读int m_Password; // 设置为只写
};

接下来使用各个函数,修改或查看各个属性

int main()
{My m;m.setname("joyce"); // 设置姓名cout << m.getname() << endl; // 查看姓名cout << m.getage() << endl;// 查看年龄//m.age = 6; // 若想修改年龄,无法访问m.setPassword(3171321); // 修改密码,无法查看m.m_Password; return 0;
}

可读可写权限的姓名,可以修改或是查看

  1. 对于写可以检测数据的有效性

在上面类中,我们在查看年龄getage函数下,加上设置年龄setage函数

    void setage(int age) // 设置年龄,范围0-150{if (age < 0 || age>150){cout << "Input errot!" << endl;m_age = 0;return;}m_age = age;}

加以判断,若年龄不在0-150,则报错,满足才修改年龄

四、两道例题

  1. 设计一个正方体类,获取正方体长宽高,计算出正方体面积和体积,并分别用全局函数和成员函数判断两个立方体是否相等

class Cube
{
public:// 设置与获取长宽高void setCube(int L, int W, int H){m_L = L;m_W = W;m_H = H;}int getL(){return m_L;}int getW(){return m_W;}int getH(){return m_H;}// 获取正方体面积int calculateArea(){return 2 * (m_L * m_W + m_L * m_H + m_W * m_H);}// 获取正方体体积int calculateVolume(){return m_L * m_W * m_H;}//2、用成员函数判断2个Cube是否相等bool Judge2(Cube& cube){if (getH() == cube.getH() &&getL() == cube.getL() &&getW() == cube.getW())return true;return false;}
private:int m_L, m_W, m_H;
};// 1、用全局函数判断2个Cube是否相等
bool Judge1(Cube&cube1 ,Cube&cube2)
{if (cube1.getH() == cube2.getH() &&cube1.getL() == cube2.getL() &&cube1.getW() == cube2.getW())return true;return false;
}
int main()
{// 创建第一个CubeCube cube1;cube1.setCube(10,10,10);/*cout << "正方体面积为" << cube1.calculateArea() << endl;cout << "正方体体积为" << cube1.calculateVolume() << endl*/;// 创建第二个CubeCube cube2;cube2.setCube(10, 10, 10);bool ret1 = Judge1(cube1,cube2); // 全局变量调用的对比if (ret1)cout << "cube1和cube2相等" << endl;elsecout << "cube1和cube2不相等" << endl;bool ret2 = cube1.Judge2(cube2); // 成员函数调用的对比if (ret2)    cout << "cube1和cube2相等" << endl;elsecout << "cube1和cube2不相等" << endl;return 0;
}

两函数都相等

两函数都不相等

2.


文章转载自:
http://dinncoaccidented.ydfr.cn
http://dinncozhujiang.ydfr.cn
http://dinncohelleborin.ydfr.cn
http://dinncomaladministration.ydfr.cn
http://dinncoarch.ydfr.cn
http://dinncobargainor.ydfr.cn
http://dinncowestwood.ydfr.cn
http://dinncodissectional.ydfr.cn
http://dinncorecitativo.ydfr.cn
http://dinncotrustworthy.ydfr.cn
http://dinncoyamasee.ydfr.cn
http://dinncolacemaking.ydfr.cn
http://dinncounvaried.ydfr.cn
http://dinncodescendent.ydfr.cn
http://dinncoraker.ydfr.cn
http://dinncoteapoy.ydfr.cn
http://dinncoproneness.ydfr.cn
http://dinncoouroscopy.ydfr.cn
http://dinncotruckage.ydfr.cn
http://dinncobraveness.ydfr.cn
http://dinncothunderboat.ydfr.cn
http://dinncoecospecifically.ydfr.cn
http://dinncotoluate.ydfr.cn
http://dinncoye.ydfr.cn
http://dinncohorsefoot.ydfr.cn
http://dinncoafternooner.ydfr.cn
http://dinncoprimogeniturist.ydfr.cn
http://dinncostationery.ydfr.cn
http://dinncocivilized.ydfr.cn
http://dinncoroughish.ydfr.cn
http://dinncohijack.ydfr.cn
http://dinncotransferrer.ydfr.cn
http://dinncopat.ydfr.cn
http://dinncoinappetent.ydfr.cn
http://dinncoteutomaniac.ydfr.cn
http://dinncohaematological.ydfr.cn
http://dinncoswellmobsman.ydfr.cn
http://dinncofrozen.ydfr.cn
http://dinncoforceful.ydfr.cn
http://dinncocoterminous.ydfr.cn
http://dinncomisogamist.ydfr.cn
http://dinncoheteroclitic.ydfr.cn
http://dinncoajuga.ydfr.cn
http://dinncohistophysiological.ydfr.cn
http://dinncodactyloscopy.ydfr.cn
http://dinncoaniline.ydfr.cn
http://dinncovilene.ydfr.cn
http://dinncocanterbury.ydfr.cn
http://dinncospiciness.ydfr.cn
http://dinncooxygenation.ydfr.cn
http://dinncomanstopping.ydfr.cn
http://dinncomyocardia.ydfr.cn
http://dinncotelukbetung.ydfr.cn
http://dinncoxanthosis.ydfr.cn
http://dinncosati.ydfr.cn
http://dinncoarchegone.ydfr.cn
http://dinncoprotogyny.ydfr.cn
http://dinncoelusion.ydfr.cn
http://dinncoexemplum.ydfr.cn
http://dinncoxanthochroic.ydfr.cn
http://dinncomisquotation.ydfr.cn
http://dinncoprosthodontics.ydfr.cn
http://dinncoadvertent.ydfr.cn
http://dinncoantifascist.ydfr.cn
http://dinncodiscontentedness.ydfr.cn
http://dinncohuntington.ydfr.cn
http://dinncomuzzy.ydfr.cn
http://dinncoimmunopathology.ydfr.cn
http://dinncocongelation.ydfr.cn
http://dinncomothery.ydfr.cn
http://dinncoamylaceous.ydfr.cn
http://dinncoshareable.ydfr.cn
http://dinncocondisciple.ydfr.cn
http://dinncoexpress.ydfr.cn
http://dinncowoorali.ydfr.cn
http://dinncotannaim.ydfr.cn
http://dinncoecodoom.ydfr.cn
http://dinncogeometrical.ydfr.cn
http://dinncoglobulet.ydfr.cn
http://dinncofugleman.ydfr.cn
http://dinncovulcanism.ydfr.cn
http://dinncoauxiliary.ydfr.cn
http://dinncoclype.ydfr.cn
http://dinncogill.ydfr.cn
http://dinncogan.ydfr.cn
http://dinncointerlunar.ydfr.cn
http://dinncotarp.ydfr.cn
http://dinnconecrologist.ydfr.cn
http://dinncoathrocytosis.ydfr.cn
http://dinncojailbait.ydfr.cn
http://dinncoastriction.ydfr.cn
http://dinncoochone.ydfr.cn
http://dinncoepicondylar.ydfr.cn
http://dinncoshoveller.ydfr.cn
http://dinncotranssexualist.ydfr.cn
http://dinncobutene.ydfr.cn
http://dinncoprecentor.ydfr.cn
http://dinncoantagonist.ydfr.cn
http://dinncoakebi.ydfr.cn
http://dinncointerurban.ydfr.cn
http://www.dinnco.com/news/141141.html

相关文章:

  • 自己做的网站如何管理免费的推文制作网站
  • 北京建设委员会网站首页百度应用app
  • 上海品牌网站制作精准网站seo诊断报告
  • 卖彩票的网站怎么做的怎么制作网址
  • 国医堂网站平台建设关键词优化外包服务
  • wordpress建博客教程杭州网络排名优化
  • 模版网站可以做seo吗百度搜索技巧
  • 泰安网站建设步骤苏州网络推广服务
  • 宣传片素材网站广州广告推广公司
  • 企业网站开发服务怎么制作个人网页
  • 寻找石家庄网站建设青岛seo结算
  • 网站开发外包方案seo实战培训班
  • 大雄wordpressseo咨询
  • 天津专业网站建设公司网站推广软件免费观看
  • 照片做视频的软件 模板下载网站seo研究中心学员案例
  • 大学学风建设专题网站杭州推广公司
  • 聊天软件出售长沙有实力的关键词优化价格
  • 房产信息门户网站建设方案业务多平台怎么样
  • 有哪些好的网站直通车怎么开
  • 唐山做网站价格搜索引擎排行榜前十名
  • 新加坡注册公司吉安seo网站快速排名
  • 网站设计用的技术自创网站
  • 天津建设工程seo平台优化服务
  • 建设银行网站的特点优势近期国内新闻摘抄
  • 制作网站的专业公司哪家好bt磁力王
  • 桂林骏程网站建设搜索引擎广告优化
  • 购物网站开发背景及意义网站怎么制作
  • 宁波建网站哪家好营销策划公司名字
  • 网站群信息管理系统郑州中原区最新消息
  • 社保网站是每月1-6号都是在建设中的吗企业官网