目录
封装
访问权限
struct和class的区别
成员属性设置为私有
设计案例
C++面向对象的三大特性:封装、继承、多态
C++认为万事万物皆为对象,对象上有其属性和行为!!
封装
意义:
- 将属性和行为作为一个整体,表现生活中的事物
- 将属性和行为加以权限控制
语法:class 类名 { 访问权限 : 属性 / 行为} ;
#include <iostream>
using namespace std;
const double PI = 3.14;
//设计一个圆类,求圆的周长 2 * PI * 半径
class Cirle
{
//访问权限
public:
//属性
int m_R;
//行为
double calculate()
{
return 2 * PI * m_R;
}
} ;
int main(void)
{
Cirle mcirle;
mcirle.m_R = 10;
cout << "圆周长:" << mcirle.calculate() << endl;
return 0;
}
访问权限
权限 | 关键词 | 说明 |
公共权限 | public | 类内可以访问 类外可以访问 |
保护权限 | protected | 类内可以访问 类外不可以访问 子类可以访问父类 |
私有权限 | private | 类内可以访问 类外不可以访问 子类不能访问父类 |
struct和class的区别
唯一区别:默认的访问权限不同,struct为公有,class为私有
成员属性设置为私有
优点:
- 自行控制读写权限
- 对于写权限,可以检测数据的有效性
设计案例
#include <iostream>
using namespace std;
//立方体类(m_L m_H m_W),求出其面积和体积,分别用全局函数和成员函数判断两个立方体是否相等
class Cube
{
private:
int m_L;
int m_H;
int m_W;
public:
void set_cube_L(int Lvalue)
{
m_L = Lvalue;
}
int get_cube_L(void)
{
return m_L;
}
void set_cube_H(int Hvalue)
{
m_H = Hvalue;
}
int get_cube_H(void)
{
return m_H;
}
void set_cube_W(int Wvalue)
{
m_W = Wvalue;
}
int get_cube_W(void)
{
return m_W;
}
int calculate_S() //面积
{
return 2 * m_L * m_W + 2 * m_W * m_H + 2 * m_L * m_H;
}
int calculate_V() // 体积
{
return m_L * m_H * m_W;
}
void isSameByClass(Cube &c)
{
if (get_cube_H() == c.get_cube_H() && get_cube_W() == c.get_cube_W() && get_cube_L() == c.get_cube_L())
{
cout << "成员函数判断:c1 and c2 相等" << endl;
}
else
{
cout << "成员函数判断:c1 and c2 不相等" << endl;
}
}
};
//全局函数判断两个立方体是否相等
void isSame(Cube& c1, Cube& c2)
{
if (c1.get_cube_H() == c2.get_cube_H() && c1.get_cube_W() == c2.get_cube_W() && c1.get_cube_L() == c2.get_cube_L())
{
cout << "全局函数判断:c1 and c2 相等" << endl;
}
else
{
cout << "全局函数判断:c1 and c2 不相等" << endl;
}
}
int main(void)
{
Cube c1, c2;
c1.set_cube_H(10);
c1.set_cube_L(10);
c1.set_cube_W(10);
c2.set_cube_H(10);
c2.set_cube_L(10);
c2.set_cube_W(10);
cout << "c1的面积是:" << c1.calculate_S() << endl;
cout << "c1的体积是:" << c1.calculate_V() << endl;
isSame(c1, c2);
c1.isSameByClass(c2);
system("pause");
return 0;
}
推荐阅读:[C++核心编程](三):函数高级