类和对象(1)--《Hello C++ Wrold!》(3)--(C/C++)

06-02 1689阅读

文章目录

  • 前言
  • 面向过程和面向对象的初步认识
  • 类的引入
  • 类的定义
  • 类的访问限定符及封装:
    • 封装
    • 类的作用域
    • 类的实例化

      前言

      这期的话会讲解关于对象的一些基础知识,包括:面向过程和面向对象的初步认识,类的引入,类的定义,类的访问限定符及封装,类的作用域,类的实例化。

      面向过程和面向对象的初步认识

      面向过程注重的是求解问题的步骤

      面向对象注重的是每个对象之间的交互(也就是每个人应该干什么)

      拿外卖举例:

      面向过程就是下单->制作->配送->接收

      面向对象就是->顾客下单,之后接收外卖 商家接受顾客的订单,制作,做完给骑手 骑手从商家那里拿到外卖,送给顾客

      类的引入

      类可以看作是一种结构体,比C语言里面的结构体多了里面可以有成员函数

      但是C++在用类的时候,一般喜欢用class

      C++兼顾c语言,struct以前的用法都可以继续用

      举例:C++在定义时一般省略struct,但是加上也可以:
      eg: struct List st1;
      

      类的定义

      类的定义跟C语言里面的结构的差不多

      形如eg:
      class list
      { 
      };
      

      只是里面的成员可以是成员函数,也可以是成员变量

      注意:可以先写成员函数(里面有成员变量的使用也行),再写成员被变量,也可以穿插着写

      各部分的称呼:

      class为定义类的关键字,list为类的名字,{}中为类的主体,注意类定义结束时后面分

      号不能省略。

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

      成员函数。

      类有两种定义方式:(常用第二种)

      1.定义和声明都在类里面(在类里面定义的函数如果符合内联函数条件的话,会自动成内联函数)

      2.声明在类里面,定义在类外面(一般是类声明放在.h文件中,成员函数定义放在.cpp文件中)

      注意:在类外定义的时候,要记得在成员前面加::(其实也就成员函数的定义要用:: ) (::是域作用限定符)

      eg:void list::Init()
      {
      }
      不要跟类对象的使用搞混了(一般用.(不是指针时)比如:st1.a)
      

      注意:1.在公司里面,类的成员变量一般会在前面或者后面加个_(自己习惯前面加_)和其他变量区分:来防止这种情况的出现:类和对象(1)--《Hello C++ Wrold!》(3)--(C/C++)

      变量的声明和定义的评判标准和函数是不一样的:
      变量的声明:没有开辟空间的就算变量的声明(比如类的定义里面的 int a;(因为定义类时没有开辟空间))
      变量的定义:开辟了空间的 比如:main函数里面 int a;这样
      

      类的访问限定符及封装:

      类的访问限定符有:public(公有–里面的是公有成员),protected(保护–里面的是保护成语),private(私有–里面的是私有成员)

      1.如果后面没有访问限定符,作用域就到 } 即类结束

      eg:class list
      {
      public:
      //这里面的就是public的,不用加大括号
      eg: int a;
          int b;
      private:
      };
      

      2.class的默认访问权限为private,struct为public(因为struct要兼容C语言)

      3.public部分可以在类外访问,protected和private不行(这后两个在继承那才会有区别)

      注意:访问限定符只在编译时有用,当数据映射到内存后,没有任何访问限定符上的区别

      封装

      封装本质上是一种管理,让用户更方便使用类,也让用户不能访问不该访问的内部东西(比如private里的)–比如自己建立的栈,有些人在使用时要自己求,就不让他求,保持格式统一

      类的作用域

      C++中的四种域:局部域,全局域,命名空间域和类域

      编译器在成员函数里面搜索变量时:先局部域,再类域,最后全局域(命名空间域的话要看是在哪展开的)

      (解决冲突的办法eg:函数可以用域限定符就可以防止重名但没重载导致的冲突)

      局部域和全局域会影响生命周期,类域和命名空间域不会,这俩里面变量的生命周期取决于变量本身的存储形式

      类的实例化

      类的实例化也就是给类分配空间

      eg:已经定义了一个类list 
          int main()
      {
        list st1;//这就算类的实例化
         return 0;
      }
      

      注意区分类的定义,类的声明和类的实例化

      类的声明:(其他两个上面都有举例)

      eg: class list;
      
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码