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

启东住房和城乡建设局网站有什么平台可以推广

启东住房和城乡建设局网站,有什么平台可以推广,网站建设的基础,做内贸哪个网站好4.类和对象 C面向对象的三大特性为:封装,继承,多态C认为万事万物都皆为对象#xff0c;对象上有其属性和行为 例如#xff1a; 人可以作为对象#xff0c;属性有姓名、年龄、身高、体重...,行为有走、跑、跳、说话...车可以作为对象#xff0c;属性有轮胎、方向盘、车灯…4.类和对象 C面向对象的三大特性为:封装,继承,多态C认为万事万物都皆为对象对象上有其属性和行为 例如 人可以作为对象属性有姓名、年龄、身高、体重...,行为有走、跑、跳、说话...车可以作为对象属性有轮胎、方向盘、车灯...,行为有载人、放音乐、开空调...具有相同性质的对象我们可以对其进行抽象抽象为类人属于人类车属于车类 4.1 封装 4.1.1 封装的意义 封装是C面向对象三大特性之一封装的意义 将属性和行为作为一个整体表现生活中的事物将属性和行为加以权限控制 封装意义一在设计类的时候属性和行为写在一起表现事物 语法class 类名{访问权限: 属性 / 行为}; 类中的属性和行为 我们统一称为成员 属性 - 成员属性/成员变量行为 - 成员函数/成员方法 示例1设计一个圆类求圆的周长类和对象-封装-属性和行为作为整体.cpp #include iostream using namespace std; // 圆周率 const double PI 3.1415926; // 设计一个圆类,求圆的周长 // 圆求周长的公式 : 2 * PI * 半径 class Circle {// 访问权限// 公共权限 public:// 行为// 获取圆的周长double calculatePerimeter(double radius) {return 2 * PI * radius;}// 属性:半径int m_radius; }; int main() {// 通过圆类,创建具体的圆(对象)// 实例化(通过一个类 创建一个对象的过程)Circle c1;c1.m_radius 10;cout圆的周长为 : c1.calculatePerimeter(c1.m_radius)endl;return 0; } 示例2设计学生类 #include iostream using namespace std; #include string // 设计一个学生类,属性有姓名和学号 // 可以给姓名和学号赋值,可以显示学生的姓名和学号// 设计学生类 class Student{ public://公共权限// 类中的属性和行为 我们统一称为成员// 属性 - 成员属性/成员变量// 行为 - 成员函数/成员方法string m_name; // 姓名int m_Id; // 学号// 行为void setName(string name){ // 设置姓名m_name name;}void setId(int id){ // 设置学号m_Id id;}void display(){ // 显示姓名和学号cout 姓名 m_name endl;cout 学号 m_Id endl;} };int main() {// 创建一个具体学生 实例化对象Student s1;// 给s1对象 进行属性赋值操作s1.m_name 张三;s1.m_Id 2019001;// 显示学生信息s1.display();s1.setName(李四);s1.setId(2019002);s1.display(); } 运行结果 PS D:\Work\c\build\bin .D:/Work/c/bin/app.exe 姓名张三 学号2019001 姓名李四 学号2019002 PS D:\Work\c\build\bin 封装意义二 类在设计时可以把属性和行为放在不同的权限下加以控制 访问权限有三种 public 公共权限protected 保护权限private 私有权限 #include iostream using namespace std;/*三种访问权限:公共权限 public 成员 类内可以访问 类外可以访问保护权限 protected 成员 类内可以访问 类外不可以访问(儿子可以访问父亲中的保护内容)私有权限 private 成员 类内可以访问 类外不可以访问(儿子不可以访问父亲中的私有内容) */class Person{ public:void func() {m_Name 张三;//公共权限m_Car 拖拉机;//保护权限m_Password 123456;//私有权限} public:// 公共权限string m_Name;//姓名 protected:// 保护权限string m_Car;//汽车 private:// 私有权限int m_Password;//密码 };int main() {// 实例化具体对象Person p1;p1.m_Name 呵呵哒;//类外可以访问(public)// p1.m_Car 保时捷;//保护权限内容,在类外访问不到 error:成员Person::m_Car不可访问// p1.m_Password 123456;//私有权限内容,在类外访问不到 error:成员Person::m_Password不可访问p1.func();//类外可以访问(public)return 0; } 4.1.2 struct和class区别 在C中struct和class唯一的区别就是默认的访问权限不同 区别 struct默认权限是公共权限class默认权限是私有权限 #include iostream using namespace std;class C1{int m_A;// 默认权限 是私有 };struct C2{int m_A;// 默认权限 是公共 };int main() {/*在C中struct和class唯一的区别就是默认的访问权限不同区别struct默认权限是公共权限class默认权限是私有权限*/C1 c1;// c1.m_A 10;// error:成员C1::m_A不可访问C2 c2;c2.m_A 100;// ok return 0; } 4.1.3 成员属性设置为私有 优点1将所有成员属性设置为私有可以自己控制读写权限优点2对于写权限我们可以检测到数据的有效性 演示控制读写权限  #include iostream using namespace std; /*成员属性设置私有优点1将所有成员属性设置为私有可以自己控制读写权限优点2对于写权限我们可以检测到数据的有效性 */ // 人类 class Person{ public:// 设置姓名void setName(string name) {m_Name name;}// 获取姓名string getName() const {// 返回类型为const表示返回的是常量不可修改返回值。return m_Name;// 返回m_Name的值。}// 获取年龄int getAge() const {// 返回类型为const表示返回的是常量不可修改返回值。return m_Age;// 返回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(张三);cout姓名p.getName()endl;// 姓名张三// 获取年龄cout年龄p.getAge()endl;// 输出年龄18// 偶像设置p.setIdol(迪丽热巴);return 0; // 程序执行成功返回0 } 演示检测到数据的有效性例如年龄设置为0-150之间 #include iostream using namespace std; /*成员属性设置私有优点1将所有成员属性设置为私有可以自己控制读写权限优点2对于写权限我们可以检测到数据的有效性 */ // 人类 class Person{ public:// 设置姓名void setName(string name) {m_Name name;}// 获取姓名string getName() const {// 返回类型为const表示返回的是常量不可修改返回值。return m_Name;// 返回m_Name的值。}// 设置年龄 0-150void setAge(int age) {if (age 0 || age 150) {cout 年龄: age ,输入错误 endl;// 输出错误信息。return;}m_Age age;}// 获取年龄int getAge() const {// 返回类型为const表示返回的是常量不可修改返回值。return m_Age;// 返回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(张三);cout姓名p.getName()endl;// 姓名张三// 获取年龄p.setAge(250);cout年龄p.getAge()endl;// 输出年龄18// 偶像设置p.setIdol(迪丽热巴);return 0; // 程序执行成功返回0 } 练习案例1设计立方体类 设计立方体类Cube求出立方体的面积和体积分别用全局函数和成员函数判断两个立方体是否相等 1.类和对象-封装-设计案例1-立方体类  #include iostream using namespace std;/*立方体类设计1.创建立方体类2.设计属性3.设计行为 获取立方体面积和体积4.分别利用全局函数和成员函数 判断两个立方体是否相等 */ class Cube{ public:// 设置长void setL(int l){m_Ll;}// 获取长int getL(){return m_L;}// 设置宽void setW(int w){m_Ww;}// 获取宽int getW(){return m_W;}// 设置高void setH(int h){m_Hh;}// 获取高int getH(){return m_H;}// 获取立方体面积int getArea(){return 2*(m_L*m_Wm_L*m_Hm_W*m_H);}// 获取立方体体积int getVolume(){return m_L*m_W*m_H;}// 利用成员函数判断两个立方体是否相等bool isSameByClass(Cube c){if(getL() c.getL() getW() c.getW() getH() c.getH()) {return true;}else{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; // 判断长宽高是否相等如果相等则返回true否则返回falseelse return false; }int main() {Cube c1,c2;c1.setL(5);c1.setW(4);c1.setH(3);c2.setL(10);c2.setW(10);c2.setH(10);coutc1的面积为c1.getArea()endl;coutc1的体积为c1.getVolume()endl;cout***************************endl;coutc2的面积为c2.getArea()endl;coutc2的体积为c2.getVolume()endl;// 判断c1和c2是否相等// 利用全局函数判断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; } 2.类和对象-封装-设计案例2-点和圆关系案例 #include iostream using namespace std;// 点和圆关系案例// 点类 class Point{ public:// 设置xvoid setX(int x) {m_X x;}// 获取xint getX() {return m_X;}// 设置yvoid setY(int y) {m_Y y;}// 获取yint getY() {return m_Y;} private:int m_X;int m_Y; };// 圆类 class Circle { public: // 设置半径void setR(int r) {m_R r;}// 获取半径int getR() {return m_R;}// 设置圆心void setCenter(Point center) {m_Center center;}// 获取圆心Point getCenter() {return m_Center;} private:int m_R;// 半径// 在类中可以让另一个类 作为本类中的成员Point m_Center;// 圆心 }; // 判断点和圆关系 void isInCircle(Circle c, Point p) {// 计算两点之间距离 平方int distance (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());// 计算半径的平方int rDistance c.getR() * c.getR();// 判断关系if(distance rDistance) {cout点在圆上endl;}else if(distance rDistance) {cout点在圆内endl; }else {cout点在圆外endl;} } int main() {// 创建圆Circle c;c.setR(10);Point center;center.setX(10);center.setY(0);c.setCenter(center);// 创建点Point p;p.setX(10);p.setY(9);// 判断关系isInCircle(c,p);return 0; } 进一步完善项目 point.h #pragma once // 点类 class Point{ public:// 设置xvoid setX(int x);// 获取xint getX();// 设置yvoid setY(int y);// 获取yint getY(); private:int m_X;int m_Y; }; point.cpp #include point.h// 设置x void Point::setX(int x) {m_X x;} // 获取x int Point::getX() {return m_X;} // 设置y void Point::setY(int y) {m_Y y;} // 获取y int Point::getY() {return m_Y;} circle.h #pragma once #include point.h // 圆类 class Circle { public: // 设置半径void setR(int r);// 获取半径int getR();// 设置圆心void setCenter(Point center);// 获取圆心Point getCenter(); private:int m_R;// 半径// 在类中可以让另一个类 作为本类中的成员Point m_Center;// 圆心 }; circle.cpp #include circle.h // 设置半径 void Circle::setR(int r) {m_R r;} // 获取半径 int Circle::getR() {return m_R;} // 设置圆心 void Circle::setCenter(Point center) {m_Center center;} // 获取圆心 Point Circle::getCenter() {return m_Center;} 4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置在某一天我们不用时候也会删除一些自己信息数据保证安全C中的面向对象来源于生活每个对象也都会有初始设置以及对象销毁前的清理数据的设置 4.2.1 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态对其使用后果是未知同样的使用完一个对象或变量没有及时清理也会造成一定的安全问题 C利用了构造函数和析构函数解决上述问题这两个函数将会被编译器自动调用完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情因此如果我们不提供构造和析构编译器会提供编译器提供的构造函数和析构函数是空实现 构造函数主要作用在于创建对象时为对象的成员属性赋值构造函数由编译器自动调用无须手动调用析构函数主要作用在于对象销毁前系统自动调用执行一些清理工作 构造函数语法类名(){}   构造函数没有返回值也不写void函数名称与类名相同构造函数可以有参数因此可以发生重载程序在调用对象时候会自动调用构造无须手动调用而且只会调用一次 析构函数写法~类名(){} 析构函数没有返回值也不写void函数名称与类名相同在名称前加上符号~析构函数不可以有参数因此不可以发生重载程序在对象销毁时候会自动调用析构无须手动调用而且只会调用一次 #include iostream using namespace std;// 对象的初始化和清理 // 1.构造函数 进行初始化操作 class Person { public:// 1. 构造函数// 没有返回值 不用写void// 函数名 与类名相同// 构造函数可以有参数,可以发生重载// 创建对象的时候,构造函数会自动调用,而且只调用一次Person() {coutPerson 构造函数的调用endl;}// 2.析构函数 进行清理的操作// 没有返回值 不写void// 函数名和类名相同 在名称前加~// 析构函数不可以有参数的,不可以发生重载// 对象在销毁前,会自动调用析构函数,而且只会调用一次~Person () {coutPerson 析构函数的调用endl;} };// 构造和析构都是必须有的实现,如果我们不提供,编译器会提供一个空实现的构造和析构 void test01() {Person p;// 在栈上的数据,test01执行完毕后,释放这个对象 }int main() {test01();return 0; } 执行结果 PS D:\Work\c\bin .\app Person 构造函数的调用 Person 析构函数的调用 PS D:\Work\c\bin 未完待续~
http://www.hkea.cn/news/14341689/

相关文章:

  • 高端手机网站定制wordpress重定向规则
  • 电脑技术学习网站wordpress传输失败
  • 网站开发常用jquery插件找人做购物网站
  • 云南省建设厅标准员网站科技公司 网站 石家庄
  • 模仿网站页面违法吗网站建设公司华网天
  • 中小企业网站制作是什么湖北工程建设总承包有限公司网站
  • 医疗营销网站建设方案seo外包资讯
  • 搭建网站赚钱搜索引擎有哪些?
  • 肥城市住房和城乡建设厅网站新人如何做自己的网站
  • 网站开发是啥了一个网站可以优化多少关键词
  • 济宁房地产网站建设昆明网站建设猫咪科技
  • 铜陵市住房和城乡建设局网站西双网站建设
  • 公司做网站域名的好处怎么自创软件
  • 网站域名代备案seo技术培训海南
  • 手机网站怎么上传图片天猫建设网站的目的
  • 网站改版目标wordpress 上传大图
  • 南昌网站建设品牌山西做网站怎么做
  • 企业如何进行网站推广电商平面ui设计是什么
  • 广州白云手机网站建设山西住房和城乡建设部网站
  • 建设企业网站企业网上银行官网官方seo推广技巧
  • 北京网站排行榜磁力狗在线引擎
  • 电子商务网站建设与管理期末试题网站远程图片
  • 保定建设工程信息网站wordpress主题 简洁
  • 做网站打广告犯法吗iis2008如何做网站
  • 查询网站是否被收录南昌网站建设哪家最好
  • 常规网站建设价格实惠怎么建设网站赚钱
  • 素材网站一个网站seo做哪些工作
  • 网站左侧悬浮代码有趣网址之家
  • 网站和浏览器不兼容网站上可以做直播吗
  • 网站建设费用自建网站排名