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

民和网站建设公司四川和城乡建设厅网站

民和网站建设公司,四川和城乡建设厅网站,手工做女宝宝衣服的网站,青海建设厅网站尚少岩C面向对象的三大特性:封装、继承、多态 具有相同性质的对象,抽象为类 4.1 封装 封装的意义:将属性和行为作为一个整体,表现生活中的事物,并将属性和行为加以权限控制。 4.1.1 类的定义及实例化对象 语法&#xff…

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

具有相同性质的对象,抽象为类

4.1 封装

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

4.1.1 类的定义及实例化对象

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

类中的属性和行为统称为成员,属性也可以称为成员属性或成员变量,行为也可以称为成员函数或成员方法。

代码如下:

#include <iostream>
using namespace std;//设计一个圆类,求圆的周长
const double PI=3.14;//class代表设计一个类,类后面紧跟的是类名称
class Circle
{//访问权限
public://公共权限//属性//半径int r;//行为:获取圆的周长double calculateZC(){return 2*PI*r;}};int main()
{//实例化:通过圆类,创建具体的圆(对象)Circle c1;//给圆对象的属性进行赋值c1.r=10;cout<<"圆的周长为:"<<c1.calculateZC()<<endl;return 0;
}

输出如下:

4.1.2 访问权限

访问权限分为三种:

  • 公共权限:类内外都可以访问成员
  • 保护权限:类内可以访问成员,类外不能访问
  • 私有权限:类内可以访问成员,类外不能访问

代码如下:

#include <iostream>
using namespace std;class Person
{//公共权限
public:string name;//保护权限
protected:string car;//私有权限
private:int passwd;
public:void func(){name="ddd";car="bench";passwd=4444;}
};
int main()
{//实例化一个对象Person p1;//给圆对象的属性进行赋值p1.name="dddd";//p1.car="paosij";//p1.passwd=1234;return 0;
}

错误示例:修改保护权限和私钥权限的属性。

成员属性设置为私有,可以自己控制读写权限,对于写权限,可以检测数据的有效性。

代码如下:

#include <iostream>
using namespace std;class Person
{
public://设置姓名void setName(string name){m_name=name;}//获取姓名string getName(){return m_name;}//获取年龄int getAge(){return m_age;}//设置偶像void setIdol(string idol){m_idol=idol;}private:string m_name;//姓名 可读可写int m_age=18;//年龄 只读string m_idol;//偶像 只写};
int main()
{//实例化一个对象Person p;//设置姓名p.setName("ddd");//获取姓名cout<<"姓名:"<<p.getName()<<endl;//设置年龄,不存在该函数//p.setAge("ddd");//报错 不存在该成员setAge//p.m_age=23;//报错 无法访问//获取年龄cout<<"年龄:"<<p.getAge()<<endl;//设置偶像p.setIdol("huge");//获取偶像,没有获取函数//cout<<"偶像:"<<p.getIdol()<<endl;//报错 不存在该成员getIdol//cout<<"偶像:"<<p.m_idol()<<endl;//报错 无法访问return 0;
}

错误示例:

4.1.3 struct 与 class

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

错误示例:访问class中默认权限下的成员。

4.1.4 案例1:立方体类

题目:设计立方体类,求出立方体的面积和体积,分别用全局函数和成员函数判断两个立方体是否相等

代码如下:

#include <iostream>
using namespace std;class Cube
{
private://属性:长宽高int l;int w;int h;public://设置\获取属性void setLong(int ll){l=ll;}int getLong(){return l;}void setWidth(int ww){w=ww;}int getWidth(){return w;}void setHeight(int hh){h=hh;}int getHeight(){return h;}//方法:计算面积、体积、判断两个立方体是否相等int getSquare(){return 2*(l*h+h*w+h*w);}int getVolume(){return l*w*h;}//利用成员函数判断两个立方体是否相等void isEqual(Cube &c){if(l==c.getLong() && w==c.getWidth() && h==c.getHeight()){cout<<"两个立方体相同"<<endl;}else{cout<<"两个立方体不同"<<endl;}}
};//利用全局函数判断两个立方体是否相等
void isSame(Cube &c1,Cube &c2)
{if(c1.getLong()==c2.getLong() && c1.getWidth()==c2.getWidth() && c1.getHeight()==c2.getHeight()){cout<<"两个立方体相同"<<endl;}else{cout<<"两个立方体不同"<<endl;}
}int main()
{//创建对象Cube c1;c1.setLong(1);c1.setWidth(2);c1.setHeight(3);cout<<"c1的面积为:"<<c1.getSquare()<<endl;cout<<"c1的体积为:"<<c1.getVolume()<<endl;Cube c2;c2.setLong(1);c2.setWidth(2);c2.setHeight(3);//判断两个立方体是否相等isSame(c1,c2);c1.isEqual(c2);c2.setLong(2);isSame(c1,c2);c1.isEqual(c2);return 0;
}

输出如下:

4.1.5 案例2:点和圆(分文件)

题目:设计一个圆形类和一个点类,计算点和圆的关系。

代码如下:

#include <iostream>
using namespace std;//点类
class Point
{
private:int p_x;int p_y;public://设置/获取X,Yvoid setX(int x){p_x=x;}int getX(){return p_x;}void setY(int y){p_y=y;}int getY(){return p_y;}
};//圆类
class Circle
{
private:    int c_r;//半径Point center;//圆心public://设置/获取半径圆心void setR(int r){c_r=r;}int getR(){return c_r;}void setCer(Point cer){center=cer;}Point getCer(){return center;}
};//判断点和圆的关系
void isInCircle(Circle &c,Point &p)
{int dist=(c.getCer().getX()-p.getX()) * (c.getCer().getX()-p.getX())+(c.getCer().getY()-p.getY()) * (c.getCer().getY()-p.getY());int rdist=c.getR() * c.getR();if(dist==rdist){cout<<"点在圆上"<<endl;}else if(dist>rdist){cout<<"点在圆外"<<endl;}else{cout<<"点在圆内"<<endl;}
}int main()
{//创建点对象和圆对象Point p;Circle c;Point center;//设置点的坐标p.setX(0);p.setY(0);//设置园的半径及圆心的坐标c.setR(10);center.setX(10);center.setY(0);c.setCer(center);//判断点与圆的关系isInCircle(c,p);return 0;
}

输出如下:

分文件编写:

point.h

#pragma once//防止头文件重复包含
#include <iostream>
using namespace std;//点类
class Point
{
private:int p_x;int p_y;public://设置/获取X,Yvoid setX(int x);int getX();void setY(int y);int getY();};

point.cpp

#include "point.h"//点类//设置/获取X,Y
void Point::setX(int x)//Point::的作用是声明该函数是Point作用域下的成员函数
{p_x=x;
}
int Point::getX()
{return p_x;
}void Point::setY(int y)
{p_y=y;
}
int Point::getY()
{return p_y;
}

circle.h

#pragma once
#include <iostream>
using namespace std;
#include "point.h"//圆类
class Circle
{
private:    int c_r;//半径Point center;//圆心public://设置/获取半径圆心void setR(int r);int getR();void setCer(Point cer);Point getCer();};

circle.cpp

#include "circle.h"//圆类//设置/获取半径圆心
void Circle::setR(int r)
{c_r=r;
}
int Circle::getR()
{return c_r;
}void Circle::setCer(Point cer)
{center=cer;
}Point Circle::getCer()
{return center;
}

main.cpp

#include <iostream>
using namespace std;
#include "point.h"
#include "circle.h"//判断点和圆的关系
void isInCircle(Circle &c,Point &p)
{int dist=(c.getCer().getX()-p.getX()) * (c.getCer().getX()-p.getX())+(c.getCer().getY()-p.getY()) * (c.getCer().getY()-p.getY());int rdist=c.getR() * c.getR();if(dist==rdist){cout<<"点在圆上"<<endl;}else if(dist>rdist){cout<<"点在圆外"<<endl;}else{cout<<"点在圆内"<<endl;}
}int main()
{//创建点对象和圆对象Point p;Circle c;Point center;//设置点的坐标p.setX(0);p.setY(0);//设置园的半径及圆心的坐标c.setR(10);center.setX(10);center.setY(0);c.setCer(center);//判断点与圆的关系isInCircle(c,p);return 0;
}


文章转载自:

http://DnSFxSvr.jtmrx.cn
http://repid3hN.jtmrx.cn
http://1x8xRlc6.jtmrx.cn
http://0olYHRdJ.jtmrx.cn
http://YATnI3kF.jtmrx.cn
http://eiIFICrj.jtmrx.cn
http://9qZR5E96.jtmrx.cn
http://HEGEo1hW.jtmrx.cn
http://ZYg0Tp6a.jtmrx.cn
http://MSFjuPBI.jtmrx.cn
http://EK9yavEc.jtmrx.cn
http://Y7H4R1aK.jtmrx.cn
http://cSifTh6b.jtmrx.cn
http://X8xwhyZM.jtmrx.cn
http://9lBiWKq0.jtmrx.cn
http://Hf3s73Wo.jtmrx.cn
http://1EFHgs0M.jtmrx.cn
http://Xm3h5DZG.jtmrx.cn
http://QQyVQSSZ.jtmrx.cn
http://jYHeB1ex.jtmrx.cn
http://Mpk06bHF.jtmrx.cn
http://0haADQEZ.jtmrx.cn
http://2Ryc3qLI.jtmrx.cn
http://AGTeZxD5.jtmrx.cn
http://IDWWlf2K.jtmrx.cn
http://1aRUz1ZE.jtmrx.cn
http://XAY53xoe.jtmrx.cn
http://viEUhTUQ.jtmrx.cn
http://4SnFJemD.jtmrx.cn
http://Dz6DLD3E.jtmrx.cn
http://www.dtcms.com/wzjs/774836.html

相关文章:

  • 网站推广方案书怎么做百度网站
  • 东莞门户网站建设方案商贸公司起名字大全免费
  • 南京学习做网站ui设计主要做什么工作
  • 天门网站抚州市企业网站建设
  • 西部数码网站打不开网站搭建软件d
  • 要学好网站开发要会什么广东网站建设公司电话
  • 网站做链接四川住房和城乡建设厅网站
  • 网站服务合同交印花税吗wordpress点击分享功能
  • vs2017 网站开发环境郑州经纬网络做网站吗
  • 技术支持 合肥网站建设重庆菜谱制作
  • 湖北专业网站建设大全自助建站怎么实现的
  • 网络推广山东seo属于什么职位类型
  • 外贸网站 栏目桓台网站开发
  • 网站优化 价格二维码制作工具
  • 公司网站做推广无锡网络公司服务平台
  • 温州手机网站制作网站长春网站建设
  • 图片分类展示网站源码怎么用自己电脑做网站服务器吗
  • 什么是网站源码网站建设培训教程
  • 深圳福田区住房和建设局官方网站wordpress金融插件
  • 网站seo优化分析wordpress客户端源码
  • 成都网站建设龙兵科技网站建设及托管合同
  • 做的高大上的网站wordpress登录菜单
  • 建设h5网站群晖部署wordpress
  • 杭州最便宜的网站建设军队 网站备案
  • 古镇网站建设哪家好哈尔滨网站专业制作
  • linux建设一个网站网站 备案 固话
  • 浏阳网站制作公司宣传片拍摄合同交印花税吗
  • 商场网站建设模板企业网站建设 管理 维护
  • 天猫网站做链接怎么做做网站导航按钮怎么猛
  • 网站建设 网站推广新女权时代的到来wordpress