面向对象:封装 继承 多态
封装之一:属性和行为作为整体
#include <iostream>
#include <string>
using namespace std;
#define PI 3.14
//设计一个圆类,求圆的周长
class yuan { //访问权限 属性 行为
public:
//包含属性和行为。行为一般用函数
int ban;
double zhou() {
return 2 * PI * ban;
}
};
int main() {
//通过圆类 创建具体的圆(对象)
yuan p1;
p1.ban = 10;
cout << "zhouchang为" << p1.zhou() << endl;
return 0;
}
设计学生类:
#include <iostream>
#include <string>
using namespace std;
//设计一个学生类,属性有姓名和学号
//可以给姓名和学号赋值,可以显示学生的姓名和学号
//设计学生类
//类中的属性和行为 统一称为成员
//属性 成员属性 或 成员变量
//行为 成员函数 或 成员方法
//属性
class student{
public: //公共权限
//属性
string m_Nmae; //姓名
int ID;
//行为
//显示姓名和学号
void showstudent(){
cout << "姓名:" << m_Nmae << "学号为" << ID << endl;
}
//通过行为给姓名赋值
void fuzhi(string name) {
m_Nmae=name;
}
//同理。也可以给学号赋值
};
int main() {
student p1; //实例化
//p1.m_Nmae = "掌上电脑";
p1.ID = 23;
p1.fuzhi("张三");
p1.showstudent();
return 0;
}
封装之二访问权限
- public 公共权限
- projected 保护权限
- private 私有权限
=======
struct和class 区别
在C++中,唯一的区别就是 默认的访问权限不同。
struct 默认权限为公共 public
class 默认权限为私有 private
#include <iostream>
using namespace std;
class C1
{
int m_A; //默认 私有
};
struct C2
{
int m_A; //默认权限 公共
};
int main() {
C1 p1;
//p1.m_A; 不可以访问 因为私有成员
C2 p2;
p2.m_A;
封装之三成员属性私有化
#include <iostream>
#include <string>
using namespace std;
//成员属性设置为私有
//优点1:将所有成员属性设置为私有,可以自己控制读写权限
//优点2:对于写权限。可以检测数据的有效性
class Person {
public:
//写姓名
void setname(string name)
{
m_Name = name;
}
//获取姓名
string getName()
{
return m_Name;
}
//获取年龄是一个只读的状态
int getAge() {
m_Age = 0; //初始化为0
return m_Age;
}
private:
//姓名 读写
string m_Name;
//年龄 只读
int m_Age;
//情人 只写
string m_Lover;
};
int main() {
Person p;
p.setname("zhangsan");
//所以年龄不能写入
//p.getAge = 18; 报错
cout << "姓名为" << p.getName() << endl;
system("pause");
return 0;
}