网站排名需要多长时间,云浮罗定哪有做网站的,北京百度seo工作室,网站开发选择什么软件C面向对象的三大特性#xff1a;封装、继承、多态。 封装
封装的意义一#xff1a;
将属性和行为作为一个整体#xff0c;表现生活中的事物将属性和行为加以权限控制
类中的属性和行为#xff0c;我们统一称为成员
属性也叫#xff1a; 成员属性 成员变量
行为也叫面向对象的三大特性封装、继承、多态。 封装
封装的意义一
将属性和行为作为一个整体表现生活中的事物将属性和行为加以权限控制
类中的属性和行为我们统一称为成员
属性也叫 成员属性 成员变量
行为也叫 成员函数 成员方法
格式
#includeiostream
using namespace std;
class 类名
{
//访问权限
public:
//属性
//行为};
例子
#includeiostream
using namespace std;const double pai 3.14;
//设计一个圆类求圆的周长
//圆求周长的公式2*Π*半径//class代表要设计一个类类后面紧跟着的就是类名称
class Circle
{//访问权限//公共权限
public://属性//半径int m_r;//行为//获取圆的周长double zhouchang(){return 2 * pai * m_r;}
};
int main()
{//通过圆类 创建具体的对象//实例化 通过一个类 创建一个对象的过程Circle c1;//给圆对象 的属性进行赋值c1.m_r 10;cout c1.zhouchang() endl;system(pause);return 0;
} 封装的意义二
类在设计时可以把属性和行为放在不同的权限下加以控制
访问权限有三种 public 公共权限成员 在类内可以访问类外可以访问protected 保护权限成员 在类内可以访问类外不可以访问子类可以访问父类private 私有权限成员 在类内可以访问类外不可以访问子类不能访问父类 后续更新子类和父类 例子 类内可以访问示例 这个段代码可以正常运行说明三者都可以在类内正常访问。
类外访问示例 这段代码中在类外访问公共权限的姓名是正常的在类外访问保护权限和私有权限的汽车和银行卡密码发生报错解释了访问权限的作用。 struct和class的区别
在c中struct和class唯一的区别就在于默认的访问权限不同。
区别 struct默认权限为公共class默认权限为私有 示例
下面代码中我创建了class和struct两端变量。 此时我们可以看到struct可以正常的进行访问class报错提示是private成员不能进行正常访问。 成员属性设置为私有 优点1将所有成员属性设置为私有可以自己控制读写权限优点2对于写权限我们可以检测数据的有效性 示例 通过上面这段代码我们可以通过选择设置或者不设置对应功能的函数达到可读可写只可读只可写这三种效果。
练习设计立方体类 设计立方体类求出立方体的面积和体积分别用全局函数和成员函数判断两个立方体是否相等 1.设计立方体类2.求出立方体的面积和体积
#includeiostream
using namespace std;
//创建立方体的类
class Cube
{
public://长void steL(int l){m_L l;}int steL(){return m_L;}//宽void steW(int w){m_W w;}int steW(){return m_W;}//高void steH(int h){m_H h;}int steH(){return m_H;}//获取立方体面积int calculateS(){return 2*(m_H * m_L m_H * m_W m_L * m_W);}//获取立方体体积int calculateV(){return m_H * m_L * m_W;}
private:int m_L;//长int m_W;//宽int m_H;//高
};int main()
{//创建一个立方体的对象Cube c1;c1.steH(10);c1.steL(10);c1.steW(10);cout c1.calculateS() endl c1.calculateV() endl;//第二个立方体Cube c2;c2.steH(10);c2.steL(10);c2.steW(10);
}
运行结果 3.分别用全局函数和成员函数判断两个立方体是否相等
全局函数
//利用全局函数做判断 两个立方体是否相等//位置全局
bool isSame(Cube c1, Cube c2)
{
//面积和体积同时相等说明是同一个立方体长宽高的数值可以互相调换if ((c1.calculateS() c2.calculateS()) (c1.calculateV() c1.calculateV())){return true;}return false;
}
bool retisSame(c1, c2);
if (ret)
{cout c1和c2是相等的 endl;
}
else
{cout c1和c2是不相等的 endl;
}
成员函数
bool isSameByClass(Cubec)
{if ((calculateS() c.calculateS()) (calculateV() c.calculateV()))//类内可以访问私有成员{return true;}return false;
}
完整代码
#includeiostream
using namespace std;
//创建立方体的类
class Cube
{
public://长void steL(int l){m_L l;}int steL(){return m_L;}//宽void steW(int w){m_W w;}int steW(){return m_W;}//高void steH(int h){m_H h;}int steH(){return m_H;}//获取立方体面积int calculateS(){return 2*(m_H * m_L m_H * m_W m_L * m_W);}//获取立方体体积int calculateV(){return m_H * m_L * m_W;}//利用成员函数判断两个立方体是否相等bool isSameByClass(Cubec){if ((calculateS() c.calculateS()) (calculateV() c.calculateV()))//类内可以访问私有成员{return true;}return false;}
private:int m_L;//长int m_W;//宽int m_H;//高
};//利用全局函数做判断 两个立方体是否相等
bool isSame(Cube c1, Cube c2)
{if ((c1.calculateS() c2.calculateS()) (c1.calculateV() c1.calculateV())){return true;}return false;
}
int main()
{//创建一个立方体的对象Cube c1;c1.steH(10);c1.steL(10);c1.steW(10);cout c1.calculateS() endl c1.calculateV() endl;//第二个立方体Cube c2;c2.steH(10);c2.steL(10);c2.steW(10);// bool retisSame(c1, c2);//if (ret)//{// cout c1和c2是相等的 endl;//}//else//{// cout c1和c2是不相等的 endl;//}bool ret c1.isSameByClass(c2);if (ret){cout c1和c2是相等的 endl;}else{cout c1和c2是不相等的 endl;}system(pause);return 0;
}