c++面向对象的三大特性:封装、继承、多态
一、封装
意义:将属性和行为作为一个整体 , 加以权限控制
语法:class 类名{ 访问权限:属性 / 行为 };
** 设计一个圆类 求园的周长 **
class Circle {
//权限
public;
int m_r;
//行为
double ZC()
{
return 2 * PI * m_r
}
}
int main()
{
Circle cl;
cl.m_r = 10;
cout << "圆的周长为:" << cl.ZC() << endl;
}
** 设计一个学生类,属性有姓名、学号,可以给姓名学号赋值,显示姓名学号 **
class student {
public:// 公共权限
//属性 成员属性 / 变量
string name;
int id;
//行为 成员函数 / 方法
void set(string na,int num) {
name = na;
id = num;
}
void show() {
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
}
};
int main()
{
student sl,s2;
sl.set("蒲喷喷", 5);
sl.show();
s2.set("文韬", 20);
s2.show();
system("pause");
return 0;
}
二、访问权限
①public 公共权限
类里可以访问,类外也可以访问
②protected 保护权限
类里可以访问,类外不可以访问,父的内容子可以访问
③private 私有权限
类里可以访问,类外不可以访问,父的内容子不可以访问
三、struct 和 class 的区别
struct 默认权限是公共
class 默认权限是私有
四、成员属性设置为私有
优点:
①将所有成员属性设置为私有,可以自己控制读写权限
#include <iostream>
using namespace std;
class P
{
public:
//设置姓名
void setName(string na)
{
name = na;
}
//获取姓名
string getName()
{
return name;
}
//获取年龄
int getAge()
{
return age;
}
//设置偶像
void setIdol(string s)
{
Idol = s;
}
private:
string name;//姓名 可读可写
int age = 18;//年龄 只读
string Idol;//偶性 只写
};
int main()
{
P p;
//姓名读写
p.setName("张三");
cout << "姓名:" << p.getName() << endl;
//年龄读
cout << "年龄:" << p.getAge() << endl;
//偶像写
p.setIdol("南波万男团");
system("pause");
return 0;
}
②对于写权限可以检测数据有效性
#include <iostream>
using namespace std;
class P
{
public:
//设置姓名
void setName(string na)
{
name = na;
}
//获取姓名
string getName()
{
return name;
}
//获取年龄
int getAge()
{
return age;
}
//设置年龄 0~150之间
void setAge(int a)
{
if (a < 0 || a > 150)
{
cout << "输入有误" << endl;
}
age = a;
}
//设置偶像
void setIdol(string s)
{
Idol = s;
}
private:
string name;//姓名 可读可写
int age = 18;//年龄 只读 也可以写 但是需要在(0~150)之间
string Idol;//偶性 只写
};
int main()
{
P p;
//姓名读写
p.setName("张三");
cout << "姓名:" << p.getName() << endl;
//年龄读
cout << "年龄:" << p.getAge() << endl;
//偶像写
p.setIdol("南波万男团");
system("pause");
return 0;
}