• C++ 类和对象(一)


    1.面向过程和面向对象初步认识

            C语言是面向过程的关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

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

     

     

     

    2.类的引入

            C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。

     

    3.类的定义

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

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

    类的两种定义方式:

            1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。

     

    2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::

            一般情况下,更期望采用第二种方式。

    4.类的访问限定符及封装

            4.1 访问限定符

            C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。

    【访问限定符说明】

            1. public修饰的成员在类外可以直接被访问
            2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
            3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
            4. 如果后面没有访问限定符,作用域就到 } 即类结束。
            5. class的默认访问权限为privatestruct为public(因为struct要兼容C)

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

     

            4.2 封装

            面向对象的三大特性:封装、继承、多态。

            在类和对象阶段,主要是研究类的封装特性,那什么是封装呢?

            封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。

            封装本质上是一种管理,让用户更方便使用类。比如:对于电脑这样一个复杂的设备,提供给用户的就只有开关机键、通过键盘输入,显示器,USB插孔等,让用户和计算机进行交互,完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件。

            在C++语言中实现封装,可以通过类将数据以及操作数据的方法进行有机结合通过访问权限来隐藏对象内部实现细节,控制哪些方法可以在类外部直接被使用。

     

     

    5.类的作用域

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

    声明和定义分开时,定义函数时就要指明所定义的函数在那个类域。

    6.类的实例化

    用类类型创建对象的过程,称为类的实例化

    1. 类是对对象进行描述的,是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没
    有分配实际的内存空间来存储它,(类就像一个图纸,仅仅告诉你有什么,但这些高楼大厦还没有建出来);比如:入学时填写的学生信息表,表格就可以看成是一个类,来描述具体学生信息。

    2. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量

    Person类是没有空间的,只有Person类实例化出的对象才有具体的年龄。

    3. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设
    计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象
    才能实际存储数据,占用物理空间。

     a1是被实例化了,可以访问其中内容。但是不可以用Date进行访问。

     

  • 相关阅读:
    netty系列之:channel和channelGroup
    货币政策传导与货币政策调控-中国视角下的宏观经济
    JS学习762~780(注册事件+删除事件+DOM事件流+事件对象+阻止事件冒泡+事件委托鼠标事件+键盘事件)
    docker内php使用xdebug性能分析
    重磅| Falcon 180B 正式在 Hugging Face Hub 上发布!
    获奖作品展示 | 2023嵌入式大赛AidLux系列作品精彩纷呈
    《计算机视觉中的多视图几何》笔记(0)
    (数据科学学习手札136)Python中基于joblib实现极简并行计算加速
    uni-app混合开发 navigateTo、reLaunch、redirectTo、switchTab区别
    jdk11新特性——局部变量类型推断(var ”关键字”)
  • 原文地址:https://blog.csdn.net/kqs__/article/details/133753315