4 类和对象
面向对象三大特性:封装、继承、多态
万物皆对象。对象= 属性+行为 类是抽象的对象。 比如路上有很多(具体的)车,但抽象出来都属于车。
定义类的语法:
class 类名
{
访问权限:
属性;
行为;
};
4.1 封装
封装意义:
- 结合属性和行为,符合现实。
- 权限控制
圆类
const double PI 3.1415;
class Circle
{
public: //访问权限
//属性
int m_r; //半径
//行为
double cal_circumference()
{
return 2 * PI * m_r;
}
};
//使用类
int main(){
Circle c1;
c1.m_r = 10;
cout << c1.cal_circumference() << endl;
}
4.1.1 权限控制
权限控制是封装的另一个意义。 访问权限有三种 public 公开 protected 保护 (子类可以访问父类的保护内容,具体看后面的继承) private 私有 (子类不可以访问父类的私有内容)
只有公开的成员才能类外访问。 例:
class Person
{
public :
string m_Name;
protected:
string m_Car;
private:
int m_Password;
public:
void func()
{
m_Name = "张三";
m_Car = "拖拉机";
m_Password = 123456;
}
};
int main() {
Person p;
p.m_Name = "李四";
p.m_Car = "五菱"// 错误,类外不能访问protected和private成员
}
4.1.2 struct 和 class
struct 成员默认是public class 成员默认是private
4.1.3 成员属性设置为私有
成员属性设置为private, 提供public接口,通过set和get方法设置和获取属性。 除了权限控制外,可以在set和get方法中对属性有效性进行验证。
如:
class Person
{
public:
void set_name(string name){
m_Name = name;
}
void get_name(){
return m_Name;
}
private:
string m_Name;
}
案例,设计立方体,属性(H,W,L)、方法;分别利用全局函数和成员函数判断相等。
标签:封装,Name,private,class,C++,4.1,权限,public,属性 From: https://blog.51cto.com/pigeon/5785647