0
点赞
收藏
分享

微信扫一扫

C++ 核心 4.1 类的封装

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)、方法;分别利用全局函数和成员函数判断相等。

举报

相关推荐

0 条评论