当前位置 主页 > 服务器问题 > Linux/apache问题 >

    c++ 类和对象总结

    栏目:Linux/apache问题 时间:2020-02-03 23:37

    话不多说,我们直接进入主题:
    对象:客观世界里的一切事物都可以看作是一个对象,每一个对象应当具有属性(静态特征,比如一个班级,一个专业,一个教室)和行为(动态特征,例如:学习,开会,体育比赛等)两个要素。 对象是由一组属性和一组行为构成的。
    类(class):就是对象的类型,代表了某一批对象的共同特性和特征。类是对象的抽象,而对象是类的具体实例。

    2.1 类的引入

    在C语言中我们定义一个结构体是这样定义的:

    struct Student
    {
      int _age;
      char* _Gender;
      char* _Name;
    };
    int main()
    {
      struct S;
      return 0;
    }

    我们都知道,在C中,“数据”和“处理数据的操作(函数)”是分开的,语言本身并没有支持“数据和函数”之间的关联性。那么,如果我们要在某种特定情况下让数据和函数有一定的关联,这个时候我们应该怎么处理呢?
    先看一个例子:

    这里写图片描述 

    很明显,编译器报错了,还很多。也就是说在C语言当中是不允许在结构体中定义函数的,那么在C++中是不是也是这样呢?

    这里写图片描述 

    通过对比,我们明显的发现C++是可以做到我们想要将数据和函数产生一定关系的操作的。
    为了区别C语言中结构体的定义struct,在C++中我们常用class来代替struct。

    2.2 类的定义

    #include <iostream>
    using namespace std;
    class Student
    {
    public:
      char* _name;
    private:
      char* _Gender;
      int _age;
    };
    int main()
    {
      class S;
      return 0;
    }

    class是C++中定义类的关键字,Student为类的名字,{}中为类的主体,和结构体类似,在{}后面跟的是;。类中的元素称为类的成员,类中的数据称为类的属性或者类的成员变量,类中的函数称为类的成员函数。

    类的定义通常有两种方式:

    1、将类的声明和定义都放在类体中za
    2、将类的声明放在.h头文件中,定义放在.cpp文件中

    在代码中我们看到了private 和 public两个没有见过的东西,接下来我们讲一讲C++的三大特性:继承 封装 多态
    封装:隐藏对象的属性和现实细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法有机结合。

    这里的public 和 private是C++中的访问限定符,访问限定符有三个:public (公有) protected(保护) private(私有)。在下面的博文中我们会用到这些限定符,具体情况后续文章再作介绍,这里读者只需了解就可。

    这里做一些说明:

    1、public成员在类外可以直接访问
    2、protected和private成员在类外不能够直接访问,在这里我们简单的把他们看成一样的。(二者区别就是基类private成员在派生类中是不能被访问的,如果基类成员不想再类外被访问,但需要在派生类中能访问,就定义为protected,后面博文更到派生类时我们会再来把这两个东西拿出来再讲一讲)
    3、他们的作用域从该访问限定符出现的位置开始直到下一个访问限定符出现截止
    4、class的默认访问权限是private,而struct默认访问权限是public(因为struct要兼容C的特点)

    那么我们如何在类外访问一个类中的私有成员变量呢?(面试题)

    方法一:在类中添加一个共有的方法

    这里写图片描述 

    我们可以看到在public中定义的公有函数可以在类外访问私有成员变量,这是访问的一种方法。