C++面向对象的三大特性
封装
继承
多态
C++认为万事万物皆为对象,对象上有其属性和行为
什么是封装?
封装是C++面向对象三大特性之一
封装的意义:
将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物语法:
class类名{访问权限:属性/行为};
#include<iostream>
using namespace std;//圆周率
const double PI = 3.14;//设计一个圆类,求圆的周长
//圆求周长的公式:2*PI*R
//class代表设计一个类,类后面紧跟着的就是类名
class circle {//访问权限//公共权限
public://属性//半径int r;//行为//获取圆的周长double ZC() {return 2 * PI * r;}
};int main() {//通过圆类创建具体的圆(对象)circle c1;//给圆对象的属性进行赋值c1.r = 10;cout << "圆的周长是:" << c1.ZC() << endl;
}
类中的属性和行为我们统一称为成员
属性 = 成员属性 = 成员变量
行为 = 成员函数 = 成员方法
三种权限对比
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制访问权限有三种:
1. public 公共权限成员 类内可以访问 类外可以访问
2. protected 保护权限
成员 类内可以访问 类外不可以访问―儿子可以访问父亲中的保护内容
3. private 私有权限
成员 类内可以访问 类外不可以访问儿子不可以访问父亲的私有内容
#include<iostream>
using namespace std;class person {
public:string name;
protected:string car;
private:int pwd;
public:void func() {name = "ty";car = "ducatti";pwd = 123456;}
};int main() {person p1;p1.func(); //public可以访问
}
struct和class的区别
在C++中struct和class唯—的区别就在于默认的访问权限不同
区别:
struct 默认权限为公共class 默认权限为私有
成员属性设置为私有
优点1: 将所有成员属性设置为私有,可以自己控制读写权限
优点2: 对于写权限,我们可以检测数据的有效性
#define _CRT_SECURE_NO_WARNINGS //确保编译器不会显示与安全性相关的警告信息。
#include<iostream>
#include<string>
using namespace std;class person {
public:void setname(string name) {Name = name;}string getname() {return Name;}int getage() {return Age;}int setage(int age) {if (age < 0 || age >150) {cout << "年龄" << age << "输入有误!" << endl;return 0;}Age = age;}void setidol(string idol) {Idol = idol;}
private:string Name; //可读可写int Age = 24; //只读string Idol; //只写
};int main() {person p;//可读可写p.setname("tianyang");cout << "姓名:" << p.getname() << endl;//只读cout << "年龄:" << p.getage() << endl;//可读可写p.setage(151);cout << "年龄:" << p.getage() << endl;//只写p.setidol("ty");
}
姓名:tianyang
年龄:24
年龄151输入有误!
年龄:24