C++ 面向对象-封装

C++ 是一种多范式编程语言,它支持面向对象编程(OOP)范式。面向对象编程是一种程序设计思想,其中程序由对象组成,每个对象都是一个实例,具有数据和相关操作。在C++中,实现面向对象编程主要通过类和对象。

  1. 类(Class):类是一种用户定义的数据类型,用于封装数据和操作。类可以看作是对象的蓝图或模板,描述了对象的属性(成员变量)和行为(成员函数)。

C++ 中的类是一种用户定义的数据类型,用于封装数据和相关操作。类可以看作是一种模板,描述了数据的结构和如何对数据进行操作。在类中,可以定义成员变量(数据)和成员函数(操作)。这样的封装使得数据更安全,也更易于维护和重用。
类的简单实例:

类可以在头文件中进行定义,也可以在源文件中进行定义。

class RolePlayer {
public:
    double m_PosX;
    double m_PosY;
​
private:
    char * m_NPCName;
    int m_nHP;
};

在源文件中进行实例化:

    RolePlayer role;

在C++中,实例化是指创建一个类的对象。通过实例化,你可以使用类中定义的成员变量和成员函数。获得实例化对象就能够对成员变量或成员函数进行访问。

2.对象(Object):对象是类的一个实例,具有类中定义的属性和行为。通过实例化类,可以创建对象,并 在程序中使用它们。

在类中我定义了4个成员变量,但是此时我只能访问两个,这就涉及到成员的访问权限;在C++中,类的成员(包括成员变量和成员函数)可以通过访问权限属性进行限制。这些属性控制了成员在类内和类外的可见性和访问权限。主要的访问权限属性包括:

1.public: 公有成员可以在类的内部和外部被访问。这意味着类的对象以及类的成员函数可以访问公有成员;

上述示例中RolePlayer类中的公有成员:

public:
    double m_PosX;
    double m_PosY;

2.private: 私有成员只能在类的内部被访问,类的外部无法直接访问私有成员。即使是类的其他成员函数也不能直接访问私有成员。所有成员默认是私有的。

上述示例中RolePlayer类中的私有成员:

private:
    char * m_NPCName;
    int m_nHP;

3.protected: 受保护成员可以在类的内部被访问,也可以在派生类中被访问,但在类的外部无法直接访问受保护成员。

补充:

派生类:是通过继承一个或多个已存在的类来创建的新类。派生类继承了其基类(也称为父类或超类)的特性,包括成员变量和成员函数,并且可以添加新的成员变量和成员函数。这种继承机制允许在不重复编写相同代码的情况下,扩展和修改现有类的功能。

在RolePlayer类中添加受保护的成员:

protected:
    int m_PP;

发现在实例化出来的role对象中依旧无法进行访问;

事实上若是要对私有成员或者受保护成员进行修改,一般来说会在提供一个公共成员函数接口进行成员的修改或访问;如此时我要对私有成员变量进行赋值(修改)或访问,那么此时就可以编辑一个公共的赋值(修改)函数或和一个公共的访问函数;受保护成员变量同理。

public:
    //修改:
    void SetHP(int HP) {
        m_nHP = HP;
    }
​
    //访问:
    int GetHP() {
        return m_nHP;
    }
成员函数的使用:
    RolePlayer role;
    role.m_PosX = 3.222;
    role.m_PosY = 3.233;
​
    role.SetHP(44);
    std::cout << role.GetHP() << std::endl;

role.SetHP(44);对role对象的m_nHP 进行传值,传入的值为44;

role.GetHP():获取role对象的m_nHP值,获得的值为44;

在类中也可以定义对象相关的行为,如我在类中定义Attack()方法

此时IDE会自动在与头文件同名的.cpp文件中进行行为方法的定义;

此时我们可以注意到IDE自动就将类的类名设置为Attack()方法的命名空间,事实上,在某种程度上,类可以被视为一个单独的命名空间,但它们并不完全等同于命名空间。

总结:

这些权限属性允许你控制成员的访问级别,从而提高了封装性和安全性。通常情况下,成员变量应该被声明为私有的,而成员函数可以根据需要选择公有、私有或受保护。

上述内容就涉及到C++面向对象编程的第一大特性----封装。

封装(Encapsulation):封装是一种将数据和操作绑定在一起的机制,通过将数据成员声明为私有的并提供公有的成员函数来实现。这样可以隐藏数据的具体实现细节,并确保数据的安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值