C++面向对象的三大特性为:封装、继承、多态
例如:人属于人类,车属于车类....
封装的意义:
封装是C++面向对象三大特性之一
封装的意义一:
1、将属性和行为作为一个整体,表现生活中的事物
2、将属性和行为加以权限控制
语法: class 类名{ 访问权限: 属性 / 行为 };
示例1:设计一个圆类,求圆的周长
#include<iostream>
using namespace std;
const double PI = 3.14;
class Circle {
public:
int r;
double calcuate() {
return 2 * r * PI;
}
};
int main() {
Circle c1;
c1.r = 5;
cout << c1.calcuate() << endl;
system("pause");
return 0;
}
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
1、public 公共权限
2、protected 保护权限
3、private 私有权限
#include<iostream>
#include<string>
using namespace std;
class Priv {
private:
string peroson_name;
protected:
string car_name;
public:
string pass;
};
int main() {
Priv v1;
v1.pass = "123"; //由于属性的访问权限是公共的 所以可以访问
//v1.car_name = "123"; //由于属性的访问权限是受保护的的 所以无法访问 报错
//v1.person_name = "123";//由于属性的访问权限是私人的 所以无法访问 报错
system("pause");
return 0;
}
struct和class区别
在C++中 struct和class唯一的区别就在于 默认的访问权限不同
在struct中,默认访问的权限为public
在class中,默认访问的权限为private
#include<iostream>
#include<string>
using namespace std;
class C1
{
int m_A; //默认是私有权限
};
struct C2
{
int m_A; //默认是公共权限
};
int main() {
C1 c1;
//c1.m_A = 10; //错误,访问权限是私有
C2 c2;
c2.m_A = 10; //正确,访问权限是公共
system("pause");
return 0;
}
成员属性设置为私有:
优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我们可以检测数据的有效性
用自己的话来说:我们是程序员,那么所有的东西都应该被我们自己掌控,而不是把操作权给别人
示例:
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
void set_my_age(int age) {
if (age < 0 || age> 100) { //传入的数据自己还可以进行相应的判断,是否为合法
cout << "年龄超过范围,默认设置为0" << endl;
this->my_age = 0;
return;
}
this->my_age = age;
cout << "年龄设置成功" << endl;
}
void echo_my_age() {
cout << "年龄为:" << this->my_age << endl;
}
//其他的以此类推,主要这里的学习的思想
private: //成员属性都是自己能操控的
int my_age;
string my_name;
string my_girl;
};
int main() {
Person p1;
//p1.set_my_age(100);
p1.set_my_age(101);
p1.echo_my_age();
system("pause");
return 0;
}