• C++类详解


    目录

    听说点赞的人会一直好运哦!

    听说点赞的人会一直好运哦!

    听说点赞的人会一直好运哦!

    类怎么来的?

    类的定义:

    关于类域:

    类的大小:

    相关知识:



    类怎么来的?

    在结构体的基础上延申出来的
    祖师爷在原来C结构体的基础上进行了一个升级
    就是结构体内部可以定义函数
    于是,结构体内部的变量就叫做成员变量,函数叫做成员函数
    这个结构体就不再是一个简单的结构体,而是一个类,可以实现相关的功能
    而类的定义,实际上就是把结构体定义中的struct改成了class

    类的定义:


    1、一般来说,建议在成员变量前加一个_前缀,例如_menber
    为什么?因为为了避免内部调用传参的时候发生混淆
    2、如果类前没有加访问限定符,默认为private(私有);而struct默认为public(公开)
    3、访问限定符分:public(公共)、protected(保护)、private(私有)
         public(公共):在类外部可以被访问
         protected(保护)、private(私有)在类外部不可以被访问(继承部分会有变化) 
    4、定义类时,可以和struct一样的定义,但是一般定义类不会写class前缀
    5、访问限定符怎么用?在类内部使用,作用范围直到下一个限定符为止,直到作用域结束

    关于类域:


    类本身就是一个域,类似于命名空间域
    一个函数、一个for循环、一个类、只要有{}符号,内部都可以看作一个域
    而域改变的是搜索规则

    类如何做声明定义分离?
    注意,声明定义分离最重要的是要解决定义要互相能够找到,要么域打开到全局,要么指定访问
    所以,类中的成员函数使用的是指定访问
    即在成员函数定义的前面加上::域访问限定符,指定这个函数是某个类的成员函数
    但是,并不是说指定了类,就只会到类域中去找
    而是,首先是局部域、再类域,类域没有再去全局域,都没有,报错


    类的大小:


    sizeof(类名):只计算成员变量,(遵循内存对齐)
    为什么只计算成员变量呢?
    设想一个场景:
    有一个类,实例化了1w个对象
    那么,这1w个对象的成员变量都是不一样的,因为类对象成员变量可以理解为对象的属性
    但是,他们的函数是不是也不一样呢?
    不,他们的成员函数都是一样的
    那么,加入每个类都存储他们的函数方法,那么就会凭空多出1w个函数的地址空间
    而这个空间内的内容又都是一样的,是不是一种特别蛋疼的捏村浪费?
    是的,没错,就是浪费
    所以,成员函数不存储在类内,而是单独抽取出来,在一个公共域
    这个公共域叫做代码段
    因此,记住,对象只存成员变量

    那么,问题又来了:
    如果一个类内部,一个成员变量都没有,只有成员函数
    那,这个类的大小是多少?
    按上面的逻辑,是0对吗?
    好,那么,问题又来了:
    即使这个类的内存是0
    那,你怎么证明这个类存在?
    去哪找这个类?这个类在哪!?!天上?海底?还是你心里?
    所以,明显给0是不靠谱的
    所以,祖师爷规定:
    没有成员变量的类大小是1bety,也就是1字节
    就是为了记录这个类存在过

    相关知识:


    关于定义:
    变量定义的标志是开辟空间
    定义不是初始化,初始化是给定义初始一个值,概念不要混淆

    封装:
    把数据和函数封装起来,起到一个保护的作用,不让外部访问修改的private,可以让外部访问修改的pubilc或者protected
    使得代码更加规范,舒爽

    C语言是面向过程编程
    C++是面向对象编程 

  • 相关阅读:
    面试官问我为啥B+树一般都不超过3层?3层B+树能存多少数据?
    Hive DML常见操作
    获取当天年月日,及开始结束时间
    基于Python和mysql开发的看图猜成语微信小程序(源码+数据库+程序配置说明书+程序使用说明书)
    OpenCV-Python学习(4)—— OpenCV 图像对象的创建与赋值
    分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测
    工业数字化与新一代数字化系统设计平台----讲座
    Redis基础类型ZSet增删改查(带Java库源码)
    Java FreeMarker模板引擎注入深入分析
    电池可热插拔拆卸对三防加固平板有什么意义|亿道三防onerugged
  • 原文地址:https://blog.csdn.net/qq_51216031/article/details/136606061