C++系列——————类和对象(上)

慈云数据 2024-05-30 技术支持 39 0

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、面向对象的三大特征
  • 二、类的引入
    • 2.1类的定义
    • 三.类的访问限定符
      • 3.1访问限定符的介绍
      • 3.2.访问限定符的使用
      • 四、类的作用域
      • 五、类的实例化
      • 六、类对象模型
        • 6.1 如何计算类对象的大小
        • 总结

          前言

          在学习C语言你可能听到过,C语言是面向过程的语言,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

          C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成

          一、面向对象的三大特征

          c++面向对象的语言,同样的具备面向对象的特性:分装、继承、多态。

          特性一:封装

          数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进交互。(简单来说,就好比我们在学习c语言时使用的一些函数如:printf函数,我们在使用它的时候并不知道它的底层是怎么实现的)

          特性二:继承

          继承是一个进程,通过一个进程,一个对象可以获得另一个对象的属性(数据和函数),且可以想起加入属于自己的方法和属性。用这种方法可以自动的对一个类中提供另一个类的成员和数据结构。当A类被另B类继承,A类可以称之为基类或者父类;B类被称之为派生类或者子类。

          特性三:多态

          如果几个相似而不完全相同的对象,当对他发出同一个消息时,他们的反映各不相同,执行不同的操作。这种现象叫做多态现象。在C++中多态是指由继承而产生的相关的不同的类,其对象会对同一消息做出不同的相应。他能增加程序的灵活性

          二、类的引入

             C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量 
          ,也可以定义函数  。
          

          在学习C语言时,我们并没有听到类的概念,c++是以C语言为基础,对其进行完善和拓展的,而c++是兼容C语言的,所以在c++中定义类的方式有两种。

          struct classname
          {
          	//成员变量
          	//成员函数
          };
          class classname
          {
              //成员变量
          	//成员函数
          };
          
                  当然以上两种方式存在差别,等一下我们会展开介绍。
          

          2.1类的定义

          代码如下(示例):

          也可以将关键字struct替换为关键字class(可以将class看作struct的升级版)

          也可以将关键字struct替换为关键字class

          struct为定义类的关键字,stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。

          类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

          这里需要注意,如果类的成员函数声明和定义都在类的内部,可能会被编译器当作内敛函数来处理。

            上面结构体的定义,在C++中更喜欢用class来代替 
          

          三.类的访问限定符

          3.1访问限定符的介绍

          成员访问修饰符: 描述了类成员的访问控制,即所能使用的一个范围

          公有的public:没有访问限制,其他类可以访问公有成员变量和方法。

          保护的protected:只能在当前类和继承该类的子类中访问,受保护成员变量和方法对于其他类不可见。

          私有的private :只能在当前类中访问,其他类无法直接访问。

          在上面我们提到,虽然c++支持使用关键字struct和class来创建类,但是这两种方法还是会存在差异:

          对于使用关键字class创建的类,其默认成员函数及成员变量是私有的(只允许该种类创建出来的对象访问),若是想进行访问,必须使用关键字public来修饰。

          在这里插入图片描述

          使用关键字struct创建的类,默认成员变量及成员函数是共有的,可以对它直接访问,这里就不演示了。

          3.2.访问限定符的使用

          访问限定符的作用域,是从使用第一个访问限定符开始,直到出现下一个访问限定符为止,若是此后未再出现访问限定符,则生效区域直到类的结束。

          示例:

          在这里插入图片描述

          四、类的作用域

               类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用
            ::作用域操作符指明成员属于哪个类域。
          

          示例:(声明定义分离)

          class Person
           {
           public:
            void PrtPerson();
           private:
            char _name[20];
            char _gender[3];
            int  _age;
           }; 
          // 这里需要指定PrtPerson是属于Person这个类域
          void Person::PrtPersonInfo()
           {
               cout
          public:
          	void Init()
          	{
          		int* pos;
          		pos = nullptr;
          		top = capacity = 0;
          	}
          private:
          	int* a;
          	int top;
          	int capacity;
          };
          
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon